sandbox/pe/chapter5.erl

24 lines
633 B
Erlang

%% chapter 5: maps and records
-module(chapter5).
-include("records.hrl").
-export([make_urgent/1, count_characters/1]).
%% Maps are defined with a #{ Key => Value, ... } syntax
%% =>: update existing key or add new key
%% :=: update existing key
make_urgent(M) ->
M#{status := urgent}.
%% Valid: make_urgent(#{status => reminder, who => kyle}).
%% Invalid: make_urgent(#{who => kyle}).
count_characters(Str) ->
count_characters(Str, #{}).
count_characters([H|T], #{ H := N }=X) ->
count_characters(T, X#{H := N + 1});
count_characters([H|T], X) ->
count_characters(T, X#{H => 1});
count_characters([], X) -> X.