From 0579308bf0559635e3742e7fa634648182d916c5 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sun, 15 Sep 2019 21:05:05 +0100 Subject: Remove maps from stdlib --- gen/src/gleam@map.erl | 89 ++++++++++++++++++++++++++++++++++++++++++++++ gen/src/gleam@map_dict.erl | 89 ---------------------------------------------- 2 files changed, 89 insertions(+), 89 deletions(-) create mode 100644 gen/src/gleam@map.erl delete mode 100644 gen/src/gleam@map_dict.erl (limited to 'gen/src') diff --git a/gen/src/gleam@map.erl b/gen/src/gleam@map.erl new file mode 100644 index 0000000..e3a2e35 --- /dev/null +++ b/gen/src/gleam@map.erl @@ -0,0 +1,89 @@ +-module(gleam@map). +-compile(no_auto_import). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, fetch/2, put/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). + +size(A) -> + maps:size(A). + +to_list(A) -> + maps:to_list(A). + +from_list(A) -> + maps:from_list(A). + +is_key(A, B) -> + maps:is_key(A, B). + +has_key(Map, Key) -> + is_key(Key, Map). + +new() -> + maps:new(). + +fetch(A, B) -> + gleam__stdlib:map_fetch(A, B). + +erl_put(A, B, C) -> + maps:put(A, B, C). + +put(Map, Key, Value) -> + erl_put(Key, Value, Map). + +erl_map_values(A, B) -> + maps:map(A, B). + +map_values(Map, Fun) -> + erl_map_values(Fun, Map). + +keys(A) -> + maps:keys(A). + +values(A) -> + maps:values(A). + +erl_filter(A, B) -> + maps:filter(A, B). + +filter(Map, Fun) -> + erl_filter(Fun, Map). + +erl_take(A, B) -> + maps:with(A, B). + +take(Map, Keys) -> + erl_take(Keys, Map). + +merge(A, B) -> + maps:merge(A, B). + +erl_delete(A, B) -> + maps:remove(A, B). + +delete(Map, Key) -> + erl_delete(Key, Map). + +drop(Map, Keys) -> + gleam@list:fold(Keys, Map, fun(Key, Acc) -> delete(Acc, Key) end). + +update(Dict, Key, F) -> + case fetch(Dict, Key) of + {ok, Value} -> + put(Dict, Key, F({ok, Value})); + + {error, _} -> + put(Dict, Key, F({error, not_found})) + end. + +do_fold(List, Acc, F) -> + case List of + [] -> + Acc; + + [{K, V} | Tail] -> + do_fold(Tail, F(K, V, Acc), F) + end. + +fold(Dict, Acc, F) -> + Kvs = to_list(Dict), + do_fold(Kvs, Acc, F). diff --git a/gen/src/gleam@map_dict.erl b/gen/src/gleam@map_dict.erl deleted file mode 100644 index 77eaf79..0000000 --- a/gen/src/gleam@map_dict.erl +++ /dev/null @@ -1,89 +0,0 @@ --module(gleam@map_dict). --compile(no_auto_import). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, fetch/2, put/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). - -size(A) -> - maps:size(A). - -to_list(A) -> - maps:to_list(A). - -from_list(A) -> - maps:from_list(A). - -is_key(A, B) -> - maps:is_key(A, B). - -has_key(Map, Key) -> - is_key(Key, Map). - -new() -> - maps:new(). - -fetch(A, B) -> - gleam__stdlib:map_fetch(A, B). - -erl_put(A, B, C) -> - maps:put(A, B, C). - -put(Map, Key, Value) -> - erl_put(Key, Value, Map). - -erl_map_values(A, B) -> - maps:map(A, B). - -map_values(Map, Fun) -> - erl_map_values(Fun, Map). - -keys(A) -> - maps:keys(A). - -values(A) -> - maps:values(A). - -erl_filter(A, B) -> - maps:filter(A, B). - -filter(Map, Fun) -> - erl_filter(Fun, Map). - -erl_take(A, B) -> - maps:with(A, B). - -take(Map, Keys) -> - erl_take(Keys, Map). - -merge(A, B) -> - maps:merge(A, B). - -erl_delete(A, B) -> - maps:remove(A, B). - -delete(Map, Key) -> - erl_delete(Key, Map). - -drop(Map, Keys) -> - gleam@list:fold(Keys, Map, fun(Key, Acc) -> delete(Acc, Key) end). - -update(Dict, Key, F) -> - case fetch(Dict, Key) of - {ok, Value} -> - put(Dict, Key, F({ok, Value})); - - {error, _} -> - put(Dict, Key, F({error, not_found})) - end. - -do_fold(List, Acc, F) -> - case List of - [] -> - Acc; - - [{K, V} | Tail] -> - do_fold(Tail, F(K, V, Acc), F) - end. - -fold(Dict, Acc, F) -> - Kvs = to_list(Dict), - do_fold(Kvs, Acc, F). -- cgit v1.2.3