aboutsummaryrefslogtreecommitdiff
path: root/gen/src/gleam@list.erl
diff options
context:
space:
mode:
Diffstat (limited to 'gen/src/gleam@list.erl')
-rw-r--r--gen/src/gleam@list.erl400
1 files changed, 0 insertions, 400 deletions
diff --git a/gen/src/gleam@list.erl b/gen/src/gleam@list.erl
deleted file mode 100644
index 57789ff..0000000
--- a/gen/src/gleam@list.erl
+++ /dev/null
@@ -1,400 +0,0 @@
--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, find_map/2, all/2, any/2, zip/2, strict_zip/2, intersperse/2, at/2, unique/1, sort/2, range/2, repeat/2, split/2, split_while/2, key_find/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
- [] ->
- gleam@result:none();
-
- [X | _] ->
- {ok, X}
- end.
-
-tail(List) ->
- case List of
- [] ->
- gleam@result:none();
-
- [_ | 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, Predicate) ->
- do_filter(List, Predicate, []).
-
-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, Initial, Fun) ->
- case List of
- [] ->
- Initial;
-
- [X | Rest] ->
- fold(Rest, Fun(X, Initial), Fun)
- end.
-
-fold_right(List, Initial, Fun) ->
- case List of
- [] ->
- Initial;
-
- [X | Rest] ->
- Fun(X, fold_right(Rest, Initial, Fun))
- end.
-
-find(Haystack, IsDesired) ->
- case Haystack of
- [] ->
- gleam@result:none();
-
- [X | Rest] ->
- case IsDesired(X) of
- true ->
- {ok, X};
-
- _ ->
- find(Rest, IsDesired)
- end
- end.
-
-find_map(Haystack, Fun) ->
- case Haystack of
- [] ->
- gleam@result:none();
-
- [X | Rest] ->
- case Fun(X) of
- {ok, X1} ->
- {ok, X1};
-
- _ ->
- find_map(Rest, Fun)
- end
- end.
-
-all(List, Predicate) ->
- case List of
- [] ->
- true;
-
- [X | Rest] ->
- case Predicate(X) of
- true ->
- all(Rest, Predicate);
-
- _ ->
- false
- end
- end.
-
-any(List, Predicate) ->
- case List of
- [] ->
- false;
-
- [X | Rest] ->
- case Predicate(X) of
- false ->
- any(Rest, Predicate);
-
- _ ->
- true
- end
- end.
-
-zip(Xs, Ys) ->
- case {Xs, Ys} of
- {[], _} ->
- [];
-
- {_, []} ->
- [];
-
- {[X | Xs1], [Y | Ys1]} ->
- [{X, Y} | zip(Xs1, Ys1)]
- 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
- [] ->
- List;
-
- [_] ->
- List;
-
- [X | Rest] ->
- [X, Elem | intersperse(Rest, Elem)]
- end.
-
-at(List, Index) ->
- case Index < 0 of
- true ->
- gleam@result:none();
-
- false ->
- case List of
- [] ->
- gleam@result:none();
-
- [X | Rest] ->
- case Index =:= 0 of
- true ->
- {ok, X};
-
- false ->
- at(Rest, Index - 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, Compare) ->
- case {A, B} of
- {[], _} ->
- B;
-
- {_, []} ->
- A;
-
- {[Ax | Ar], [Bx | Br]} ->
- case Compare(Ax, Bx) of
- lt ->
- [Ax | merge_sort(Ar, B, Compare)];
-
- _ ->
- [Bx | merge_sort(A, Br, Compare)]
- end
- end.
-
-do_sort(List, Compare, ListLength) ->
- case ListLength < 2 of
- true ->
- List;
-
- false ->
- SplitLength = ListLength div 2,
- AList = take(List, SplitLength),
- BList = drop(List, SplitLength),
- merge_sort(
- do_sort(AList, Compare, SplitLength),
- do_sort(BList, Compare, ListLength - SplitLength),
- Compare
- )
- end.
-
-sort(List, Compare) ->
- do_sort(List, Compare, length(List)).
-
-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, Index) ->
- do_split(List, Index, []).
-
-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, Predicate) ->
- do_split_while(List, Predicate, []).
-
-key_find(KeywordList, DesiredKey) ->
- find_map(KeywordList, fun(Keyword) -> {Key, Value} = Keyword,
- case Key =:= DesiredKey of
- true ->
- {ok, Value};
-
- false ->
- gleam@result:none()
- end end).