shijiang1130 发表于 2014-10-13 16:20

erlang 去重

lists:usort/111> A=.

12> lists:usort(A).

13>

patagonia2 发表于 2016-04-19 22:01

也是用er编写的-module (un).
-mode (compile).
-define (PP (V), io:format ("~s = ~p~n", [??V, V])).

unique (A) -> unique (A, []).
unique ([], A) -> lists:reverse (A);
unique (, A) ->
    case lists:member (H, A) of
      true -> unique (T, A);
      ____ -> unique (T, )
    end.

unik (L) -> unik (L, sets:new()).
unik ([], S) -> sets:to_list (S);
unik (, S) ->
    case sets:is_element (H, S) of
      true -> unik (T, S);
      ____ -> unik (T, sets:add_element (H, S))
    end.

main (_) ->
    L = ,
    TU1 = timer:tc (fun unique/1, ),
    TU2 = timer:tc (fun unik/1, ),
    TU3 = timer:tc (fun lists:usort/1, ),
    ?PP (L), ?PP (TU1), ?PP (TU2), ?PP (TU3),
halt().
L =
TU1 = {5,}
TU2 = {23,}
TU3 = {6,}

shijiang1130 发表于 2016-04-20 09:17

回复 2# patagonia2


    好奇你是怎么运行的? main(_) .....

patagonia2 发表于 2016-04-20 11:57

回复 3# shijiang1130

{:yxh71:}
    escript file.erl

patagonia2 发表于 2016-05-22 15:19

er语言中也有宏的概念,宏也就是宏-define (Uniq(V), sets:to_list(sets:from_list(L))).
很相似。
页: [1]
查看完整版本: erlang 去重