Packages
gleam_stdlib
0.22.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
src/gleam@map.erl
-module(gleam@map).
-compile(no_auto_import).
-export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]).
-export_type([map_/2]).
-type map_(Key, Value) :: any() | {gleam_phantom, Key, Value}.
-spec size(map_(any(), any())) -> integer().
size(Map) ->
maps:size(Map).
-spec to_list(map_(ANK, ANL)) -> list({ANK, ANL}).
to_list(Map) ->
maps:to_list(Map).
-spec from_list(list({ANU, ANV})) -> map_(ANU, ANV).
from_list(List) ->
maps:from_list(List).
-spec has_key(map_(AOE, any()), AOE) -> boolean().
has_key(Map, Key) ->
maps:is_key(Key, Map).
-spec new() -> map_(any(), any()).
new() ->
maps:new().
-spec get(map_(AOU, AOV), AOU) -> {ok, AOV} | {error, nil}.
get(From, Get) ->
gleam_stdlib:map_get(From, Get).
-spec insert(map_(APG, APH), APG, APH) -> map_(APG, APH).
insert(Map, Key, Value) ->
maps:put(Key, Value, Map).
-spec map_values(map_(APS, APT), fun((APS, APT) -> APW)) -> map_(APS, APW).
map_values(Map, Fun) ->
maps:map(Fun, Map).
-spec keys(map_(AQG, any())) -> list(AQG).
keys(Map) ->
maps:keys(Map).
-spec values(map_(any(), AQR)) -> list(AQR).
values(Map) ->
maps:values(Map).
-spec filter(map_(ARA, ARB), fun((ARA, ARB) -> boolean())) -> map_(ARA, ARB).
filter(Map, Property) ->
maps:filter(Property, Map).
-spec take(map_(ARM, ARN), list(ARM)) -> map_(ARM, ARN).
take(Map, Desired_keys) ->
maps:with(Desired_keys, Map).
-spec merge(map_(ASA, ASB), map_(ASA, ASB)) -> map_(ASA, ASB).
merge(Map, New_entries) ->
maps:merge(Map, New_entries).
-spec delete(map_(ASQ, ASR), ASQ) -> map_(ASQ, ASR).
delete(Map, Key) ->
maps:remove(Key, Map).
-spec drop(map_(ATC, ATD), list(ATC)) -> map_(ATC, ATD).
drop(Map, Disallowed_keys) ->
gleam@list:fold(Disallowed_keys, Map, fun delete/2).
-spec update(map_(ATJ, ATK), ATJ, fun((gleam@option:option(ATK)) -> ATK)) -> map_(ATJ, ATK).
update(Map, Key, Fun) ->
_pipe = Map,
_pipe@1 = get(_pipe, Key),
_pipe@2 = gleam@option:from_result(_pipe@1),
_pipe@3 = Fun(_pipe@2),
insert(Map, Key, _pipe@3).
-spec do_fold(list({ATQ, ATR}), ATT, fun((ATT, ATQ, ATR) -> ATT)) -> ATT.
do_fold(List, Initial, Fun) ->
case List of
[] ->
Initial;
[{K, V} | Tail] ->
do_fold(Tail, Fun(Initial, K, V), Fun)
end.
-spec fold(map_(ATU, ATV), ATY, fun((ATY, ATU, ATV) -> ATY)) -> ATY.
fold(Map, Initial, Fun) ->
_pipe = Map,
_pipe@1 = to_list(_pipe),
do_fold(_pipe@1, Initial, Fun).