1-module(maps_sum).
2-export([correct1/1,
3	 wrong1/1,
4	 wrong2/1]).
5
6-spec correct1(#{atom() => term()}) -> integer().
7
8correct1(Data) ->
9    maps:fold(fun (_Key, Value, Acc) when is_integer(Value) ->
10                      Acc + Value;
11                  (_Key, _Value, Acc) ->
12                      Acc
13              end, 0, Data).
14
15-spec wrong1([{atom(),term()}]) -> integer().
16
17wrong1(Data) ->
18    maps:fold(fun (_Key, Value, Acc) when is_integer(Value) ->
19                      Acc + Value;
20                  (_Key, _Value, Acc) ->
21                      Acc
22              end, 0, Data).
23
24-spec wrong2(#{atom() => term()}) -> integer().
25
26wrong2(Data) ->
27    lists:foldl(fun (_Key, Value, Acc) when is_integer(Value) ->
28                      Acc + Value;
29                  (_Key, _Value, Acc) ->
30                      Acc
31		end, 0, Data).
32