Prolog列表递归,在列表中添加元素

时间:2016-12-19 22:45:24

标签: recursion prolog

我需要在prolog中编写一个递归,它会添加两个列表的元素。假设我们有一个列表A = [a,b,c]B = [d,e,f],最终列表R应如下所示:R = [a+d, b+e, c+f]

我只想到这个:

xxx([a], [b], [a+b]).
xxx([H1|T1], [H2|T2], W) :- xxx(T1, T2, W), .(H1+H2, W). 

但它给了我uncaught exception: error(syntax_error('user_input:5 (char:15) expression or ] expected in list'),read_term/3)。我也试过这个:

xxx([a], [b], [a+b]).
xxx([H1|T1], [H2|T2], W) :- xxx(T1, T2, W), append(H1+H2, W, []). 

没有成功:uncaught exception: error(syntax_error('user_input:4 (char:16) expression or ] expected in list'),read_term/3)

我正在使用Gnu prolog(gprolog)

1 个答案:

答案 0 :(得分:3)

xxx([], [], []).
xxx([E|Es], [F|Fs], [E+F|EFs]) :-
   xxx(E, F, EFs).

..., maplist(ex, Es, Fs, EFs), ...

ex(E, F, E+F).

..., maplist(\E^F^(E+F)^true, Es, Fs, EFs), ...

使用library(lambda)