Commit | Line | Data |
---|---|---|
a6244ba2 SK |
1 | -module(hope_list). |
2 | ||
3 | -export_type( | |
4 | [ t/1 | |
5 | ]). | |
6 | ||
7 | -export( | |
8 | [ unique_preserve_order/1 | |
9 | ]). | |
10 | ||
11 | ||
12 | -type t(A) :: | |
13 | [A]. | |
14 | ||
15 | ||
16 | -spec unique_preserve_order(t(A)) -> | |
17 | t(A). | |
18 | unique_preserve_order(L) -> | |
17b5d686 | 19 | PrependIfNew = |
a6244ba2 SK |
20 | fun (X, Xs) -> |
21 | case lists:member(X, Xs) | |
17b5d686 SK |
22 | of true -> Xs |
23 | ; false -> [X | Xs] | |
a6244ba2 SK |
24 | end |
25 | end, | |
17b5d686 | 26 | lists:reverse(lists:foldl(PrependIfNew, [], L)). |