如何将两个列表合并成元组列表?



在erlang中,我想合并两个列表,如下

时,A = [1,2,3,4],B =["A1","A2","A3", A4),

想要的结果{1,"A1",{2,"A2",{3,"A3", {4, A4}]

我试过下面的

"模块(测试)。-出口([/0开始])。

start() ->
Abc = [2,3,1,4],
Bbc=["f1", "f2", "f3",f4],
ct:pal("Hello ~n"),
ct:pal("make_tuple_list ~p~n", [make_tuple_list(Abc,Bbc)]).
make_tuple_list([H1 | T1], [H2 | T2]) ->
[_ | _] = [{H1, H2} | make_tuple_list(T1, T2)].
make_tuple_list([], []) -> [].

"但是得到的系统错误如下

测试。Erl:14:函数make_tuple_list/2已经定义

thanks in advance.

试试下面的....

-module(test).
-export([start/0]).
start() ->
Abc = [2,3,1,4],
Bbc=["f1", "f2", "f3",f4],
ct:pal("Hello ~n"),
ct:pal("make_tuple_list ~p~n", [make_tuple_list(Abc,Bbc)]).
make_tuple_list([H1 | T1], [H2 | T2]) ->
[{H1, H2} | make_tuple_list(T1, T2)];
make_tuple_list([], []) -> [].

拆分函数子句的分隔符为;.是函数定义终止符。在上面的例子中,两次出现的make_tuple_list都以.结束,这实际上意味着,在第二次出现时,我们重新定义了一个已经定义的函数,这在ErLang中是不允许的。

-module(lc).
-export([start/0]).
start() ->
Columns = ["id", "firstname", "lastname", "prefix", "initials", "birthday"],
Rows = [
[82, "Bob", "Dubalina", "", "B.", {1971,1,29}],
[45, "Alice", "Wonderland", "", "A.", {1975,2,14}],
[23, "John", "Doe", "", "J.", {1982,5,5}],
[72, "Jane", "Doe", "", "J.", {1995,7,17}]
],
Data = #{ "data" =>    [ 
maps:from_list([ {lists:nth(X, Columns) , lists:nth(X, Values)} || X <- lists:seq(1, length(Columns))])
|| Values <- Rows ] 
},
Data.

最新更新