24 lines
633 B
Erlang
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.
|
||
|
|