[root@han learn_erl]# erl
Erlang/OTP 22 [erts-10.7.2.1] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V10.7.2.1 (abort with ^G)
1> c(conact).
{error,non_existing}
2> c(concat).
concat.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,concat}
3>
3>
3> concat:concat([[1],2,3]).
[1,2,3]
4>
4>
4> concat:concat([[1],[2],3]).
[1,2,3]
5>
5> concat:concat([[1],[2,[4]],3]).
[1,2,4,3]
6>
6>
6> concat:concat([[1,1],[2,[4]],3]).
[1,1,2,4,3]
7>
7>
7> q().
ok
8> [root@han learn_erl]#
[root@han learn_erl]#
[root@han learn_erl]#
[root@han learn_erl]#
[root@han learn_erl]# cat concat.erl
-module(concat).
-compile(export_all).
concat(List)-> concat(List, []).
concat([], List) -> List;
%concat([Hd|Tl], List) when is_list(Hd) == false -> concat(Tl, [Hd|List]);
concat([Hd|Tl], List) when is_list(Hd) == false -> [Hd]++concat(Tl, List);
concat([Hd|Tl], List) -> concat(Hd, []) ++ concat(Tl, List).
filter([], A, List) -> lists:reverse(List);
filter([Head|Tail], A, List) when Head /= A -> filter(Tail, A, [Head|List]);
filter([_|Tail], A, List) -> filter(Tail, A, List).
%集合去重,Acc初始传入为[],存放的是最终的结果
delSame([], Acc) -> Acc;
delSame([Pre|T], Acc) -> delSame([X||X<-T,X=/=Pre],Acc++[Pre]).
%求交集
crossList(L1,L2) ->
[X||X<-L1,Y<-L2,X=:=Y].
%求并集
mergeList(L1,L2)->
delSame(lists:merge(L1,L2),[]).
%qsort([H|T]) ->
% qsort([X||X<-T,X =< H])++[H]++qsort([X||X<-T,X > H]).
qsort([])->[];
qsort([Pivot|T])->
qsort([X||X<-T,X=<Pivot]) ++ [Pivot] ++ qsort([X||X<-T,X>Pivot]).