Add hope_list:unique_preserve_order/1
[hope.git] / src / hope_list.erl
diff --git a/src/hope_list.erl b/src/hope_list.erl
new file mode 100644 (file)
index 0000000..5ce527c
--- /dev/null
@@ -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).
This page took 0.029358 seconds and 4 git commands to generate.