Packages

A difference list implementation in Gleam.

Current section

Files

Jump to
differance src differance.erl
Raw

src/differance.erl

-module(differance).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([empty/0, singleton/1, to_list/1, from_list/1, append/2, concat/1, length/1, reverse/1, head/1, tail/1, zip/2, map/2, map2/3, fold/3, fold_right/3]).
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 13).
-spec empty() -> fun((list(EZC)) -> list(EZC)).
empty() ->
fun(Rest) -> Rest end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 19).
-spec singleton(EZE) -> fun((list(EZE)) -> list(EZE)).
singleton(Elem) ->
fun(Rest) -> [Elem | Rest] end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 25).
-spec to_list(fun((list(EZG)) -> list(EZG))) -> list(EZG).
to_list(Diff) ->
Diff([]).
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 31).
-spec from_list(list(EZJ)) -> fun((list(EZJ)) -> list(EZJ)).
from_list(List) ->
fun(Rest) -> lists:append(List, Rest) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 37).
-spec append(fun((list(EZM)) -> list(EZM)), fun((list(EZM)) -> list(EZM))) -> fun((list(EZM)) -> list(EZM)).
append(First, Second) ->
fun(Rest) -> _pipe = Rest,
_pipe@1 = Second(_pipe),
First(_pipe@1) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 43).
-spec concat(list(fun((list(EZQ)) -> list(EZQ)))) -> fun((list(EZQ)) -> list(EZQ)).
concat(Diffs) ->
_pipe = Diffs,
gleam@list:fold(_pipe, empty(), fun append/2).
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 49).
-spec length(fun((list(EZU)) -> list(EZU))) -> integer().
length(Diff) ->
_pipe = Diff,
_pipe@1 = to_list(_pipe),
erlang:length(_pipe@1).
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 56).
-spec reverse(fun((list(EZW)) -> list(EZW))) -> fun((list(EZW)) -> list(EZW)).
reverse(Diff) ->
fun(Rest) -> _pipe = Rest,
_pipe@1 = Diff(_pipe),
lists:reverse(_pipe@1) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 62).
-spec head(fun((list(EZZ)) -> list(EZZ))) -> gleam@option:option(EZZ).
head(Diff) ->
case to_list(Diff) of
[] ->
none;
[X | _] ->
{some, X}
end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 72).
-spec tail(fun((list(FAC)) -> list(FAC))) -> gleam@option:option(fun((list(FAC)) -> list(FAC))).
tail(Diff) ->
case to_list(Diff) of
[] ->
none;
[_ | Rest] ->
_pipe = Rest,
_pipe@1 = from_list(_pipe),
{some, _pipe@1}
end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 83).
-spec zip(fun((list(FAG)) -> list(FAG)), fun((list(FAI)) -> list(FAI))) -> fun((list({FAG,
FAI})) -> list({FAG, FAI})).
zip(Diff, Other) ->
fun(Rest) -> _pipe = gleam@list:zip(to_list(Diff), to_list(Other)),
lists:append(_pipe, Rest) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 93).
-spec map(fun((list(FAL)) -> list(FAL)), fun((FAL) -> FAN)) -> fun((list(FAN)) -> list(FAN)).
map(Diff, F) ->
fun(Rest) -> _pipe = Diff,
_pipe@1 = to_list(_pipe),
_pipe@2 = gleam@list:map(_pipe@1, F),
lists:append(_pipe@2, Rest) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 101).
-spec map2(
fun((list(FAP)) -> list(FAP)),
fun((list(FAR)) -> list(FAR)),
fun((FAP, FAR) -> FAT)
) -> fun((list(FAT)) -> list(FAT)).
map2(Diff1, Diff2, F) ->
fun(Rest) -> _pipe = gleam@list:map2(to_list(Diff1), to_list(Diff2), F),
lists:append(_pipe, Rest) end.
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 111).
-spec fold(fun((list(FAV)) -> list(FAV)), FAX, fun((FAX, FAV) -> FAX)) -> FAX.
fold(Diff, Initial, F) ->
_pipe = Diff,
_pipe@1 = to_list(_pipe),
gleam@list:fold(_pipe@1, Initial, F).
-file("/home/tttardigrade/Documents/Code/Projects/Gleam/differance/src/differance.gleam", 122).
-spec fold_right(fun((list(FAY)) -> list(FAY)), FBA, fun((FBA, FAY) -> FBA)) -> FBA.
fold_right(Diff, Initial, F) ->
_pipe = Diff,
_pipe@1 = to_list(_pipe),
gleam@list:fold_right(_pipe@1, Initial, F).