我需要在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)
答案 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)