From 2c2541750ca4b7b604070c75c18d84be833c97d5 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 25 Jun 2019 22:48:07 +0100 Subject: stdlib namespace std -> gleam --- gen/src/gleam@any.erl | 43 ++++++ gen/src/gleam@atom.erl | 13 ++ gen/src/gleam@bool.erl | 55 +++++++ gen/src/gleam@expect.erl | 25 +++ gen/src/gleam@float.erl | 22 +++ gen/src/gleam@http.erl | 6 + gen/src/gleam@int.erl | 28 ++++ gen/src/gleam@iodata.erl | 61 ++++++++ gen/src/gleam@list.erl | 369 +++++++++++++++++++++++++++++++++++++++++++++ gen/src/gleam@map_dict.erl | 89 +++++++++++ gen/src/gleam@order.erl | 73 +++++++++ gen/src/gleam@result.erl | 67 ++++++++ gen/src/gleam@string.erl | 28 ++++ gen/src/gleam@tuple.erl | 28 ++++ gen/src/std@any.erl | 41 ----- gen/src/std@atom.erl | 13 -- gen/src/std@bool.erl | 55 ------- gen/src/std@expect.erl | 25 --- gen/src/std@float.erl | 22 --- gen/src/std@http.erl | 6 - gen/src/std@int.erl | 28 ---- gen/src/std@iodata.erl | 61 -------- gen/src/std@list.erl | 369 --------------------------------------------- gen/src/std@map_dict.erl | 89 ----------- gen/src/std@order.erl | 73 --------- gen/src/std@result.erl | 67 -------- gen/src/std@string.erl | 28 ---- gen/src/std@tuple.erl | 28 ---- 28 files changed, 907 insertions(+), 905 deletions(-) create mode 100644 gen/src/gleam@any.erl create mode 100644 gen/src/gleam@atom.erl create mode 100644 gen/src/gleam@bool.erl create mode 100644 gen/src/gleam@expect.erl create mode 100644 gen/src/gleam@float.erl create mode 100644 gen/src/gleam@http.erl create mode 100644 gen/src/gleam@int.erl create mode 100644 gen/src/gleam@iodata.erl create mode 100644 gen/src/gleam@list.erl create mode 100644 gen/src/gleam@map_dict.erl create mode 100644 gen/src/gleam@order.erl create mode 100644 gen/src/gleam@result.erl create mode 100644 gen/src/gleam@string.erl create mode 100644 gen/src/gleam@tuple.erl delete mode 100644 gen/src/std@any.erl delete mode 100644 gen/src/std@atom.erl delete mode 100644 gen/src/std@bool.erl delete mode 100644 gen/src/std@expect.erl delete mode 100644 gen/src/std@float.erl delete mode 100644 gen/src/std@http.erl delete mode 100644 gen/src/std@int.erl delete mode 100644 gen/src/std@iodata.erl delete mode 100644 gen/src/std@list.erl delete mode 100644 gen/src/std@map_dict.erl delete mode 100644 gen/src/std@order.erl delete mode 100644 gen/src/std@result.erl delete mode 100644 gen/src/std@string.erl delete mode 100644 gen/src/std@tuple.erl (limited to 'gen/src') diff --git a/gen/src/gleam@any.erl b/gen/src/gleam@any.erl new file mode 100644 index 0000000..a81a836 --- /dev/null +++ b/gen/src/gleam@any.erl @@ -0,0 +1,43 @@ +-module(gleam@any). +-compile(no_auto_import). + +-export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, tuple/1, field/2]). + +from(A) -> + gleam__stdlib:identity(A). + +unsafe_coerce(A) -> + gleam__stdlib:identity(A). + +string(A) -> + gleam__stdlib:decode_string(A). + +int(A) -> + gleam__stdlib:decode_int(A). + +float(A) -> + gleam__stdlib:decode_float(A). + +atom(A) -> + gleam__stdlib:decode_atom(A). + +bool(A) -> + gleam__stdlib:decode_bool(A). + +thunk(A) -> + gleam__stdlib:decode_thunk(A). + +list_any(A) -> + gleam__stdlib:decode_list(A). + +list(Any, Decode) -> + gleam@result:then(list_any(Any), + fun(Capture1) -> + gleam@list:traverse(Capture1, Decode) + end). + +tuple(A) -> + gleam__stdlib:decode_tuple(A). + +field(A, B) -> + gleam__stdlib:decode_field(A, B). diff --git a/gen/src/gleam@atom.erl b/gen/src/gleam@atom.erl new file mode 100644 index 0000000..83392aa --- /dev/null +++ b/gen/src/gleam@atom.erl @@ -0,0 +1,13 @@ +-module(gleam@atom). +-compile(no_auto_import). + +-export([from_string/1, create_from_string/1, to_string/1]). + +from_string(A) -> + gleam__stdlib:atom_from_string(A). + +create_from_string(A) -> + gleam__stdlib:atom_create_from_string(A). + +to_string(A) -> + gleam__stdlib:atom_to_string(A). diff --git a/gen/src/gleam@bool.erl b/gen/src/gleam@bool.erl new file mode 100644 index 0000000..6714261 --- /dev/null +++ b/gen/src/gleam@bool.erl @@ -0,0 +1,55 @@ +-module(gleam@bool). +-compile(no_auto_import). + +-export([negate/1, compare/2, max/2, min/2, to_int/1]). + +negate(Bool) -> + case Bool of + true -> + false; + + false -> + true + end. + +compare(A, B) -> + case {A, B} of + {true, true} -> + eq; + + {true, false} -> + gt; + + {false, false} -> + eq; + + {false, true} -> + lt + end. + +max(A, B) -> + case A of + true -> + true; + + false -> + B + end. + +min(A, B) -> + case A of + false -> + false; + + true -> + B + end. + +to_int(Bool) -> + case Bool of + false -> + 0; + + true -> + 1 + end. diff --git a/gen/src/gleam@expect.erl b/gen/src/gleam@expect.erl new file mode 100644 index 0000000..72a4389 --- /dev/null +++ b/gen/src/gleam@expect.erl @@ -0,0 +1,25 @@ +-module(gleam@expect). +-compile(no_auto_import). + +-export([equal/2, not_equal/2, true/1, false/1, is_ok/1, is_error/1, fail/0]). + +equal(A, B) -> + gleam__stdlib:expect_equal(A, B). + +not_equal(A, B) -> + gleam__stdlib:expect_not_equal(A, B). + +true(A) -> + gleam__stdlib:expect_true(A). + +false(A) -> + gleam__stdlib:expect_false(A). + +is_ok(A) -> + gleam__stdlib:expect_is_ok(A). + +is_error(A) -> + gleam__stdlib:expect_is_error(A). + +fail() -> + true(false). diff --git a/gen/src/gleam@float.erl b/gen/src/gleam@float.erl new file mode 100644 index 0000000..0d8ec08 --- /dev/null +++ b/gen/src/gleam@float.erl @@ -0,0 +1,22 @@ +-module(gleam@float). +-compile(no_auto_import). + +-export([parse/1, to_string/1, ceiling/1, floor/1, round/1, truncate/1]). + +parse(A) -> + gleam__stdlib:parse_float(A). + +to_string(F) -> + gleam@iodata:to_string(gleam@iodata:from_float(F)). + +ceiling(A) -> + math:ceil(A). + +floor(A) -> + math:floor(A). + +round(A) -> + erlang:round(A). + +truncate(A) -> + erlang:trunc(A). diff --git a/gen/src/gleam@http.erl b/gen/src/gleam@http.erl new file mode 100644 index 0000000..8863ae6 --- /dev/null +++ b/gen/src/gleam@http.erl @@ -0,0 +1,6 @@ +-module(gleam@http). +-compile(no_auto_import). + +-export([]). + + diff --git a/gen/src/gleam@int.erl b/gen/src/gleam@int.erl new file mode 100644 index 0000000..49641a6 --- /dev/null +++ b/gen/src/gleam@int.erl @@ -0,0 +1,28 @@ +-module(gleam@int). +-compile(no_auto_import). + +-export([parse/1, to_string/1, to_base_string/2, compare/2]). + +parse(A) -> + gleam__stdlib:parse_int(A). + +to_string(A) -> + erlang:integer_to_binary(A). + +to_base_string(A, B) -> + erlang:integer_to_binary(A, B). + +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. diff --git a/gen/src/gleam@iodata.erl b/gen/src/gleam@iodata.erl new file mode 100644 index 0000000..cf7942e --- /dev/null +++ b/gen/src/gleam@iodata.erl @@ -0,0 +1,61 @@ +-module(gleam@iodata). +-compile(no_auto_import). + +-export([prepend/2, append/2, prepend_iodata/2, append_iodata/2, from_strings/1, concat/1, new/1, to_string/1, byte_size/1, from_float/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). + +prepend(A, B) -> + gleam__stdlib:iodata_prepend(A, B). + +append(A, B) -> + gleam__stdlib:iodata_append(A, B). + +prepend_iodata(A, B) -> + gleam__stdlib:iodata_prepend(A, B). + +append_iodata(A, B) -> + gleam__stdlib:iodata_append(A, B). + +from_strings(A) -> + gleam__stdlib:identity(A). + +concat(A) -> + gleam__stdlib:identity(A). + +new(A) -> + gleam__stdlib:identity(A). + +to_string(A) -> + erlang:iolist_to_binary(A). + +byte_size(A) -> + erlang:iolist_size(A). + +from_float(A) -> + io_lib_format:fwrite_g(A). + +lowercase(A) -> + string:lowercase(A). + +uppercase(A) -> + string:uppercase(A). + +reverse(A) -> + string:reverse(A). + +erl_split(A, B, C) -> + string:split(A, B, C). + +split(Iodata, On) -> + erl_split(Iodata, On, all). + +erl_replace(A, B, C, D) -> + string:replace(A, B, C, D). + +replace(Iodata, Pattern, Replacement) -> + erl_replace(Iodata, Pattern, Replacement, all). + +is_equal(A, B) -> + string:equal(A, B). + +is_empty(A) -> + string:is_empty(A). diff --git a/gen/src/gleam@list.erl b/gen/src/gleam@list.erl new file mode 100644 index 0000000..548e983 --- /dev/null +++ b/gen/src/gleam@list.erl @@ -0,0 +1,369 @@ +-module(gleam@list). +-compile(no_auto_import). + +-export([length/1, reverse/1, is_empty/1, contains/2, head/1, tail/1, filter/2, map/2, index_map/2, traverse/2, drop/2, take/2, new/0, append/2, flatten/1, fold/3, fold_right/3, find/2, all/2, any/2, zip/2, strict_zip/2, intersperse/2, at/2, unique/1, sort/1, range/2, repeat/2, split/2, split_while/2]). + +length(A) -> + erlang:length(A). + +reverse(A) -> + lists:reverse(A). + +is_empty(List) -> + List =:= []. + +contains(List, Elem) -> + case List of + [] -> + false; + + [Head | Rest] -> + Head =:= Elem orelse contains(Rest, Elem) + end. + +head(List) -> + case List of + [] -> + {error, empty}; + + [X | _] -> + {ok, X} + end. + +tail(List) -> + case List of + [] -> + {error, empty}; + + [_ | Xs] -> + {ok, Xs} + end. + +do_filter(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + NewAcc = case Fun(X) of + true -> + [X | Acc]; + + false -> + Acc + end, + do_filter(Xs, Fun, NewAcc) + end. + +filter(List, Fun) -> + do_filter(List, Fun, []). + +do_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_map(Xs, Fun, [Fun(X) | Acc]) + end. + +map(List, Fun) -> + do_map(List, Fun, []). + +do_index_map(List, Fun, Index, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_index_map(Xs, Fun, Index + 1, [Fun(Index, X) | Acc]) + end. + +index_map(List, Fun) -> + do_index_map(List, Fun, 0, []). + +do_traverse(List, Fun, Acc) -> + case List of + [] -> + {ok, reverse(Acc)}; + + [X | Xs] -> + case Fun(X) of + {ok, Y} -> + do_traverse(Xs, Fun, [Y | Acc]); + + {error, Error} -> + {error, Error} + end + end. + +traverse(List, Fun) -> + do_traverse(List, Fun, []). + +drop(List, N) -> + case N =< 0 of + true -> + List; + + false -> + case List of + [] -> + []; + + [_ | Xs] -> + drop(Xs, N - 1) + end + end. + +do_take(List, N, Acc) -> + case N =< 0 of + true -> + reverse(Acc); + + false -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_take(Xs, N - 1, [X | Acc]) + end + end. + +take(List, N) -> + do_take(List, N, []). + +new() -> + []. + +append(A, B) -> + lists:append(A, B). + +do_flatten(Lists, Acc) -> + case Lists of + [] -> + Acc; + + [L | Rest] -> + do_flatten(Rest, append(Acc, L)) + end. + +flatten(Lists) -> + do_flatten(Lists, []). + +fold(List, Acc, Fun) -> + case List of + [] -> + Acc; + + [X | Rest] -> + fold(Rest, Fun(X, Acc), Fun) + end. + +fold_right(List, Acc, Fun) -> + case List of + [] -> + Acc; + + [X | Rest] -> + Fun(X, fold_right(Rest, Acc, Fun)) + end. + +find(Haystack, F) -> + case Haystack of + [] -> + {error, not_found}; + + [X | Rest] -> + case F(X) of + {ok, X1} -> + {ok, X1}; + + _ -> + find(Rest, F) + end + end. + +all(List, F) -> + case List of + [] -> + true; + + [X | Rest] -> + case F(X) of + true -> + all(Rest, F); + + _ -> + false + end + end. + +any(List, F) -> + case List of + [] -> + false; + + [X | Rest] -> + case F(X) of + false -> + any(Rest, F); + + _ -> + true + end + end. + +zip(L1, L2) -> + case {L1, L2} of + {[], _} -> + []; + + {_, []} -> + []; + + {[X1 | Rest1], [X2 | Rest2]} -> + [{X1, X2} | zip(Rest1, Rest2)] + end. + +strict_zip(L1, L2) -> + case length(L1) =:= length(L2) of + true -> + {ok, zip(L1, L2)}; + + false -> + {error, length_mismatch} + end. + +intersperse(List, Elem) -> + case List of + [] -> + []; + + [X] -> + [X]; + + [X1 | Rest] -> + [X1, Elem | intersperse(Rest, Elem)] + end. + +at(List, I) -> + case I < 0 of + true -> + {error, not_found}; + + false -> + case List of + [] -> + {error, not_found}; + + [X | Rest] -> + case I =:= 0 of + true -> + {ok, X}; + + false -> + at(Rest, I - 1) + end + end + end. + +unique(List) -> + case List of + [] -> + []; + + [X | Rest] -> + [X | unique(filter(Rest, fun(Y) -> Y /= X end))] + end. + +merge_sort(A, B) -> + case {A, B} of + {[], _} -> + B; + + {_, []} -> + A; + + {[Ax | Ar], [Bx | Br]} -> + case Ax < Bx of + true -> + [Ax | merge_sort(Ar, B)]; + + false -> + [Bx | merge_sort(A, Br)] + end + end. + +sort(List) -> + ListLength = length(List), + case ListLength < 2 of + true -> + List; + + false -> + SplitLength = ListLength div 2, + AList = take(List, SplitLength), + BList = drop(List, SplitLength), + merge_sort(sort(AList), sort(BList)) + end. + +range(Start, Stop) -> + case gleam@int:compare(Start, Stop) of + eq -> + []; + + gt -> + [Start | range(Start - 1, Stop)]; + + lt -> + [Start | range(Start + 1, Stop)] + end. + +do_repeat(A, Times, Acc) -> + case Times =< 0 of + true -> + Acc; + + false -> + do_repeat(A, Times - 1, [A | Acc]) + end. + +repeat(A, Times) -> + do_repeat(A, Times, []). + +do_split(List, N, Taken) -> + case N =< 0 of + true -> + {reverse(Taken), List}; + + false -> + case List of + [] -> + {reverse(Taken), []}; + + [X | Xs] -> + do_split(Xs, N - 1, [X | Taken]) + end + end. + +split(List, N) -> + do_split(List, N, []). + +do_split_while(List, F, Acc) -> + case List of + [] -> + {reverse(Acc), []}; + + [X | Xs] -> + case F(X) of + false -> + {reverse(Acc), List}; + + _ -> + do_split_while(Xs, F, [X | Acc]) + end + end. + +split_while(List, F) -> + do_split_while(List, F, []). diff --git a/gen/src/gleam@map_dict.erl b/gen/src/gleam@map_dict.erl new file mode 100644 index 0000000..77eaf79 --- /dev/null +++ b/gen/src/gleam@map_dict.erl @@ -0,0 +1,89 @@ +-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). diff --git a/gen/src/gleam@order.erl b/gen/src/gleam@order.erl new file mode 100644 index 0000000..9e259ed --- /dev/null +++ b/gen/src/gleam@order.erl @@ -0,0 +1,73 @@ +-module(gleam@order). +-compile(no_auto_import). + +-export([reverse/1, to_int/1, compare/2, max/2, min/2]). + +reverse(Order) -> + case Order of + lt -> + gt; + + eq -> + eq; + + gt -> + lt + end. + +to_int(Order) -> + case Order of + lt -> + -1; + + eq -> + 0; + + gt -> + 1 + end. + +compare(A, B) -> + case {A, B} of + {lt, lt} -> + eq; + + {lt, _} -> + lt; + + {eq, eq} -> + eq; + + {gt, gt} -> + eq; + + {eq, gt} -> + lt; + + _ -> + gt + end. + +max(A, B) -> + case {A, B} of + {gt, _} -> + gt; + + {eq, lt} -> + eq; + + _ -> + B + end. + +min(A, B) -> + case {A, B} of + {lt, _} -> + lt; + + {eq, gt} -> + eq; + + _ -> + B + end. diff --git a/gen/src/gleam@result.erl b/gen/src/gleam@result.erl new file mode 100644 index 0000000..77c5a57 --- /dev/null +++ b/gen/src/gleam@result.erl @@ -0,0 +1,67 @@ +-module(gleam@result). +-compile(no_auto_import). + +-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]). + +is_ok(Result) -> + case Result of + {error, _} -> + false; + + {ok, _} -> + true + end. + +is_error(Result) -> + case Result of + {ok, _} -> + false; + + {error, _} -> + true + end. + +map(Result, Fun) -> + case Result of + {ok, X} -> + {ok, Fun(X)}; + + {error, E} -> + {error, E} + end. + +map_error(Result, Fun) -> + case Result of + {ok, _} -> + Result; + + {error, Error} -> + {error, Fun(Error)} + end. + +flatten(Result) -> + case Result of + {ok, X} -> + X; + + {error, Error} -> + {error, Error} + end. + +then(Result, Fun) -> + case Result of + {ok, X} -> + Fun(X); + + {error, E} -> + {error, E} + end. + +unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default + end. diff --git a/gen/src/gleam@string.erl b/gen/src/gleam@string.erl new file mode 100644 index 0000000..144d866 --- /dev/null +++ b/gen/src/gleam@string.erl @@ -0,0 +1,28 @@ +-module(gleam@string). +-compile(no_auto_import). + +-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2]). + +length(A) -> + string:length(A). + +lowercase(A) -> + string:lowercase(A). + +uppercase(A) -> + string:uppercase(A). + +reverse(String) -> + gleam@iodata:to_string(gleam@iodata:reverse(gleam@iodata:new(String))). + +split(String, On) -> + gleam@list:map(gleam@iodata:split(gleam@iodata:new(String), On), + fun gleam@iodata:to_string/1). + +replace(String, Pattern, With) -> + gleam@iodata:to_string(gleam@iodata:replace(gleam@iodata:new(String), + Pattern, + With)). + +append(S1, S2) -> + gleam@iodata:to_string(gleam@iodata:append(gleam@iodata:new(S1), S2)). diff --git a/gen/src/gleam@tuple.erl b/gen/src/gleam@tuple.erl new file mode 100644 index 0000000..1e236bf --- /dev/null +++ b/gen/src/gleam@tuple.erl @@ -0,0 +1,28 @@ +-module(gleam@tuple). +-compile(no_auto_import). + +-export([new/2, first/1, second/1, swap/1, fetch/2]). + +new(A, B) -> + {A, B}. + +first(Tup) -> + {A, _} = Tup, + A. + +second(Tup) -> + {_, A} = Tup, + A. + +swap(Tup) -> + {A, B} = Tup, + {B, A}. + +fetch(Haystack, Needle) -> + gleam@list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of + true -> + {ok, second(Tuple)}; + + false -> + {error, []} + end end). diff --git a/gen/src/std@any.erl b/gen/src/std@any.erl deleted file mode 100644 index 5a1a844..0000000 --- a/gen/src/std@any.erl +++ /dev/null @@ -1,41 +0,0 @@ --module(std@any). --compile(no_auto_import). - --export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, tuple/1, field/2]). - -from(A) -> - gleam__stdlib:identity(A). - -unsafe_coerce(A) -> - gleam__stdlib:identity(A). - -string(A) -> - gleam__stdlib:decode_string(A). - -int(A) -> - gleam__stdlib:decode_int(A). - -float(A) -> - gleam__stdlib:decode_float(A). - -atom(A) -> - gleam__stdlib:decode_atom(A). - -bool(A) -> - gleam__stdlib:decode_bool(A). - -thunk(A) -> - gleam__stdlib:decode_thunk(A). - -list_any(A) -> - gleam__stdlib:decode_list(A). - -list(Any, Decode) -> - std@result:then(list_any(Any), - fun(Capture1) -> std@list:traverse(Capture1, Decode) end). - -tuple(A) -> - gleam__stdlib:decode_tuple(A). - -field(A, B) -> - gleam__stdlib:decode_field(A, B). diff --git a/gen/src/std@atom.erl b/gen/src/std@atom.erl deleted file mode 100644 index a964101..0000000 --- a/gen/src/std@atom.erl +++ /dev/null @@ -1,13 +0,0 @@ --module(std@atom). --compile(no_auto_import). - --export([from_string/1, create_from_string/1, to_string/1]). - -from_string(A) -> - gleam__stdlib:atom_from_string(A). - -create_from_string(A) -> - gleam__stdlib:atom_create_from_string(A). - -to_string(A) -> - gleam__stdlib:atom_to_string(A). diff --git a/gen/src/std@bool.erl b/gen/src/std@bool.erl deleted file mode 100644 index c77a2d8..0000000 --- a/gen/src/std@bool.erl +++ /dev/null @@ -1,55 +0,0 @@ --module(std@bool). --compile(no_auto_import). - --export([negate/1, compare/2, max/2, min/2, to_int/1]). - -negate(Bool) -> - case Bool of - true -> - false; - - false -> - true - end. - -compare(A, B) -> - case {A, B} of - {true, true} -> - eq; - - {true, false} -> - gt; - - {false, false} -> - eq; - - {false, true} -> - lt - end. - -max(A, B) -> - case A of - true -> - true; - - false -> - B - end. - -min(A, B) -> - case A of - false -> - false; - - true -> - B - end. - -to_int(Bool) -> - case Bool of - false -> - 0; - - true -> - 1 - end. diff --git a/gen/src/std@expect.erl b/gen/src/std@expect.erl deleted file mode 100644 index 30b3156..0000000 --- a/gen/src/std@expect.erl +++ /dev/null @@ -1,25 +0,0 @@ --module(std@expect). --compile(no_auto_import). - --export([equal/2, not_equal/2, true/1, false/1, is_ok/1, is_error/1, fail/0]). - -equal(A, B) -> - gleam__stdlib:expect_equal(A, B). - -not_equal(A, B) -> - gleam__stdlib:expect_not_equal(A, B). - -true(A) -> - gleam__stdlib:expect_true(A). - -false(A) -> - gleam__stdlib:expect_false(A). - -is_ok(A) -> - gleam__stdlib:expect_is_ok(A). - -is_error(A) -> - gleam__stdlib:expect_is_error(A). - -fail() -> - true(false). diff --git a/gen/src/std@float.erl b/gen/src/std@float.erl deleted file mode 100644 index c627707..0000000 --- a/gen/src/std@float.erl +++ /dev/null @@ -1,22 +0,0 @@ --module(std@float). --compile(no_auto_import). - --export([parse/1, to_string/1, ceiling/1, floor/1, round/1, truncate/1]). - -parse(A) -> - gleam__stdlib:parse_float(A). - -to_string(F) -> - std@iodata:to_string(std@iodata:from_float(F)). - -ceiling(A) -> - math:ceil(A). - -floor(A) -> - math:floor(A). - -round(A) -> - erlang:round(A). - -truncate(A) -> - erlang:trunc(A). diff --git a/gen/src/std@http.erl b/gen/src/std@http.erl deleted file mode 100644 index c141e95..0000000 --- a/gen/src/std@http.erl +++ /dev/null @@ -1,6 +0,0 @@ --module(std@http). --compile(no_auto_import). - --export([]). - - diff --git a/gen/src/std@int.erl b/gen/src/std@int.erl deleted file mode 100644 index 9942040..0000000 --- a/gen/src/std@int.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@int). --compile(no_auto_import). - --export([parse/1, to_string/1, to_base_string/2, compare/2]). - -parse(A) -> - gleam__stdlib:parse_int(A). - -to_string(A) -> - erlang:integer_to_binary(A). - -to_base_string(A, B) -> - erlang:integer_to_binary(A, B). - -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. diff --git a/gen/src/std@iodata.erl b/gen/src/std@iodata.erl deleted file mode 100644 index e115bbc..0000000 --- a/gen/src/std@iodata.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(std@iodata). --compile(no_auto_import). - --export([prepend/2, append/2, prepend_iodata/2, append_iodata/2, from_strings/1, concat/1, new/1, to_string/1, byte_size/1, from_float/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). - -prepend(A, B) -> - gleam__stdlib:iodata_prepend(A, B). - -append(A, B) -> - gleam__stdlib:iodata_append(A, B). - -prepend_iodata(A, B) -> - gleam__stdlib:iodata_prepend(A, B). - -append_iodata(A, B) -> - gleam__stdlib:iodata_append(A, B). - -from_strings(A) -> - gleam__stdlib:identity(A). - -concat(A) -> - gleam__stdlib:identity(A). - -new(A) -> - gleam__stdlib:identity(A). - -to_string(A) -> - erlang:iolist_to_binary(A). - -byte_size(A) -> - erlang:iolist_size(A). - -from_float(A) -> - io_lib_format:fwrite_g(A). - -lowercase(A) -> - string:lowercase(A). - -uppercase(A) -> - string:uppercase(A). - -reverse(A) -> - string:reverse(A). - -erl_split(A, B, C) -> - string:split(A, B, C). - -split(Iodata, On) -> - erl_split(Iodata, On, all). - -erl_replace(A, B, C, D) -> - string:replace(A, B, C, D). - -replace(Iodata, Pattern, Replacement) -> - erl_replace(Iodata, Pattern, Replacement, all). - -is_equal(A, B) -> - string:equal(A, B). - -is_empty(A) -> - string:is_empty(A). diff --git a/gen/src/std@list.erl b/gen/src/std@list.erl deleted file mode 100644 index db2efae..0000000 --- a/gen/src/std@list.erl +++ /dev/null @@ -1,369 +0,0 @@ --module(std@list). --compile(no_auto_import). - --export([length/1, reverse/1, is_empty/1, contains/2, head/1, tail/1, filter/2, map/2, index_map/2, traverse/2, drop/2, take/2, new/0, append/2, flatten/1, fold/3, fold_right/3, find/2, all/2, any/2, zip/2, strict_zip/2, intersperse/2, at/2, unique/1, sort/1, range/2, repeat/2, split/2, split_while/2]). - -length(A) -> - erlang:length(A). - -reverse(A) -> - lists:reverse(A). - -is_empty(List) -> - List =:= []. - -contains(List, Elem) -> - case List of - [] -> - false; - - [Head | Rest] -> - Head =:= Elem orelse contains(Rest, Elem) - end. - -head(List) -> - case List of - [] -> - {error, empty}; - - [X | _] -> - {ok, X} - end. - -tail(List) -> - case List of - [] -> - {error, empty}; - - [_ | Xs] -> - {ok, Xs} - end. - -do_filter(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - NewAcc = case Fun(X) of - true -> - [X | Acc]; - - false -> - Acc - end, - do_filter(Xs, Fun, NewAcc) - end. - -filter(List, Fun) -> - do_filter(List, Fun, []). - -do_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_map(Xs, Fun, [Fun(X) | Acc]) - end. - -map(List, Fun) -> - do_map(List, Fun, []). - -do_index_map(List, Fun, Index, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_index_map(Xs, Fun, Index + 1, [Fun(Index, X) | Acc]) - end. - -index_map(List, Fun) -> - do_index_map(List, Fun, 0, []). - -do_traverse(List, Fun, Acc) -> - case List of - [] -> - {ok, reverse(Acc)}; - - [X | Xs] -> - case Fun(X) of - {ok, Y} -> - do_traverse(Xs, Fun, [Y | Acc]); - - {error, Error} -> - {error, Error} - end - end. - -traverse(List, Fun) -> - do_traverse(List, Fun, []). - -drop(List, N) -> - case N =< 0 of - true -> - List; - - false -> - case List of - [] -> - []; - - [_ | Xs] -> - drop(Xs, N - 1) - end - end. - -do_take(List, N, Acc) -> - case N =< 0 of - true -> - reverse(Acc); - - false -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_take(Xs, N - 1, [X | Acc]) - end - end. - -take(List, N) -> - do_take(List, N, []). - -new() -> - []. - -append(A, B) -> - lists:append(A, B). - -do_flatten(Lists, Acc) -> - case Lists of - [] -> - Acc; - - [L | Rest] -> - do_flatten(Rest, append(Acc, L)) - end. - -flatten(Lists) -> - do_flatten(Lists, []). - -fold(List, Acc, Fun) -> - case List of - [] -> - Acc; - - [X | Rest] -> - fold(Rest, Fun(X, Acc), Fun) - end. - -fold_right(List, Acc, Fun) -> - case List of - [] -> - Acc; - - [X | Rest] -> - Fun(X, fold_right(Rest, Acc, Fun)) - end. - -find(Haystack, F) -> - case Haystack of - [] -> - {error, not_found}; - - [X | Rest] -> - case F(X) of - {ok, X1} -> - {ok, X1}; - - _ -> - find(Rest, F) - end - end. - -all(List, F) -> - case List of - [] -> - true; - - [X | Rest] -> - case F(X) of - true -> - all(Rest, F); - - _ -> - false - end - end. - -any(List, F) -> - case List of - [] -> - false; - - [X | Rest] -> - case F(X) of - false -> - any(Rest, F); - - _ -> - true - end - end. - -zip(L1, L2) -> - case {L1, L2} of - {[], _} -> - []; - - {_, []} -> - []; - - {[X1 | Rest1], [X2 | Rest2]} -> - [{X1, X2} | zip(Rest1, Rest2)] - end. - -strict_zip(L1, L2) -> - case length(L1) =:= length(L2) of - true -> - {ok, zip(L1, L2)}; - - false -> - {error, length_mismatch} - end. - -intersperse(List, Elem) -> - case List of - [] -> - []; - - [X] -> - [X]; - - [X1 | Rest] -> - [X1, Elem | intersperse(Rest, Elem)] - end. - -at(List, I) -> - case I < 0 of - true -> - {error, not_found}; - - false -> - case List of - [] -> - {error, not_found}; - - [X | Rest] -> - case I =:= 0 of - true -> - {ok, X}; - - false -> - at(Rest, I - 1) - end - end - end. - -unique(List) -> - case List of - [] -> - []; - - [X | Rest] -> - [X | unique(filter(Rest, fun(Y) -> Y /= X end))] - end. - -merge_sort(A, B) -> - case {A, B} of - {[], _} -> - B; - - {_, []} -> - A; - - {[Ax | Ar], [Bx | Br]} -> - case Ax < Bx of - true -> - [Ax | merge_sort(Ar, B)]; - - false -> - [Bx | merge_sort(A, Br)] - end - end. - -sort(List) -> - ListLength = length(List), - case ListLength < 2 of - true -> - List; - - false -> - SplitLength = ListLength div 2, - AList = take(List, SplitLength), - BList = drop(List, SplitLength), - merge_sort(sort(AList), sort(BList)) - end. - -range(Start, Stop) -> - case std@int:compare(Start, Stop) of - eq -> - []; - - gt -> - [Start | range(Start - 1, Stop)]; - - lt -> - [Start | range(Start + 1, Stop)] - end. - -do_repeat(A, Times, Acc) -> - case Times =< 0 of - true -> - Acc; - - false -> - do_repeat(A, Times - 1, [A | Acc]) - end. - -repeat(A, Times) -> - do_repeat(A, Times, []). - -do_split(List, N, Taken) -> - case N =< 0 of - true -> - {reverse(Taken), List}; - - false -> - case List of - [] -> - {reverse(Taken), []}; - - [X | Xs] -> - do_split(Xs, N - 1, [X | Taken]) - end - end. - -split(List, N) -> - do_split(List, N, []). - -do_split_while(List, F, Acc) -> - case List of - [] -> - {reverse(Acc), []}; - - [X | Xs] -> - case F(X) of - false -> - {reverse(Acc), List}; - - _ -> - do_split_while(Xs, F, [X | Acc]) - end - end. - -split_while(List, F) -> - do_split_while(List, F, []). diff --git a/gen/src/std@map_dict.erl b/gen/src/std@map_dict.erl deleted file mode 100644 index b736096..0000000 --- a/gen/src/std@map_dict.erl +++ /dev/null @@ -1,89 +0,0 @@ --module(std@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) -> - std@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/std@order.erl b/gen/src/std@order.erl deleted file mode 100644 index 3a816d5..0000000 --- a/gen/src/std@order.erl +++ /dev/null @@ -1,73 +0,0 @@ --module(std@order). --compile(no_auto_import). - --export([reverse/1, to_int/1, compare/2, max/2, min/2]). - -reverse(Order) -> - case Order of - lt -> - gt; - - eq -> - eq; - - gt -> - lt - end. - -to_int(Order) -> - case Order of - lt -> - -1; - - eq -> - 0; - - gt -> - 1 - end. - -compare(A, B) -> - case {A, B} of - {lt, lt} -> - eq; - - {lt, _} -> - lt; - - {eq, eq} -> - eq; - - {gt, gt} -> - eq; - - {eq, gt} -> - lt; - - _ -> - gt - end. - -max(A, B) -> - case {A, B} of - {gt, _} -> - gt; - - {eq, lt} -> - eq; - - _ -> - B - end. - -min(A, B) -> - case {A, B} of - {lt, _} -> - lt; - - {eq, gt} -> - eq; - - _ -> - B - end. diff --git a/gen/src/std@result.erl b/gen/src/std@result.erl deleted file mode 100644 index eccddfd..0000000 --- a/gen/src/std@result.erl +++ /dev/null @@ -1,67 +0,0 @@ --module(std@result). --compile(no_auto_import). - --export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]). - -is_ok(Result) -> - case Result of - {error, _} -> - false; - - {ok, _} -> - true - end. - -is_error(Result) -> - case Result of - {ok, _} -> - false; - - {error, _} -> - true - end. - -map(Result, Fun) -> - case Result of - {ok, X} -> - {ok, Fun(X)}; - - {error, E} -> - {error, E} - end. - -map_error(Result, Fun) -> - case Result of - {ok, _} -> - Result; - - {error, Error} -> - {error, Fun(Error)} - end. - -flatten(Result) -> - case Result of - {ok, X} -> - X; - - {error, Error} -> - {error, Error} - end. - -then(Result, Fun) -> - case Result of - {ok, X} -> - Fun(X); - - {error, E} -> - {error, E} - end. - -unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default - end. diff --git a/gen/src/std@string.erl b/gen/src/std@string.erl deleted file mode 100644 index a86cfac..0000000 --- a/gen/src/std@string.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@string). --compile(no_auto_import). - --export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2]). - -length(A) -> - string:length(A). - -lowercase(A) -> - string:lowercase(A). - -uppercase(A) -> - string:uppercase(A). - -reverse(String) -> - std@iodata:to_string(std@iodata:reverse(std@iodata:new(String))). - -split(String, On) -> - std@list:map(std@iodata:split(std@iodata:new(String), On), - fun std@iodata:to_string/1). - -replace(String, Pattern, With) -> - std@iodata:to_string(std@iodata:replace(std@iodata:new(String), - Pattern, - With)). - -append(S1, S2) -> - std@iodata:to_string(std@iodata:append(std@iodata:new(S1), S2)). diff --git a/gen/src/std@tuple.erl b/gen/src/std@tuple.erl deleted file mode 100644 index 0c9e89d..0000000 --- a/gen/src/std@tuple.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@tuple). --compile(no_auto_import). - --export([new/2, first/1, second/1, swap/1, fetch/2]). - -new(A, B) -> - {A, B}. - -first(Tup) -> - {A, _} = Tup, - A. - -second(Tup) -> - {_, A} = Tup, - A. - -swap(Tup) -> - {A, B} = Tup, - {B, A}. - -fetch(Haystack, Needle) -> - std@list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of - true -> - {ok, second(Tuple)}; - - false -> - {error, []} - end end). -- cgit v1.2.3