8 [ unique_preserve_order/1
18 %% @doc lists:reverse(map_rev(L, F))
20 -spec map_slow([A], fun((A) -> (B))) ->
23 lists:reverse(map_rev(Xs, F)).
26 %% @doc O(N), tail-recursive equivalent to lists:rev(lists:map(F, L))
28 -spec map_rev([A], fun((A) -> (B))) ->
31 map_rev_acc(Xs, F, []).
33 -spec map_rev_acc([A], fun((A) -> (B)), [B]) ->
35 map_rev_acc([], _, Ys) ->
37 map_rev_acc([X|Xs], F, Ys) ->
39 map_rev_acc(Xs, F, [Y|Ys]).
42 -spec unique_preserve_order(t(A)) ->
44 unique_preserve_order(L) ->
47 case lists:member(X, Xs)
52 lists:reverse(lists:foldl(PrependIfNew, [], L)).