X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=src%2Fhope_list.erl;fp=src%2Fhope_list.erl;h=5ce527c613cae6dad47c75bf61eb1b4b4d849806;hb=a6244ba215ae16c32adce3b1c98468e007f3c582;hp=0000000000000000000000000000000000000000;hpb=8fc25ea1d79ab2c6148b73260490e804bd76ff7c;p=hope.git diff --git a/src/hope_list.erl b/src/hope_list.erl new file mode 100644 index 0000000..5ce527c --- /dev/null +++ b/src/hope_list.erl @@ -0,0 +1,26 @@ +-module(hope_list). + +-export_type( + [ t/1 + ]). + +-export( + [ unique_preserve_order/1 + ]). + + +-type t(A) :: + [A]. + + +-spec unique_preserve_order(t(A)) -> + t(A). +unique_preserve_order(L) -> + AppendIfNew = + fun (X, Xs) -> + case lists:member(X, Xs) + of true -> Xs + ; false -> Xs ++ [X] + end + end, + lists:foldl(AppendIfNew, [], L).