我想将一个元素附加到列表的每个元素。元素也必须是列表。
示例:
A = [a,b,c]
B = [ele,ele2]
结果将是:
R = [[a,ele,ele2],[b,ele,ele2],[c,ele,ele2]]
我尝试了
maplist(custom_append,A,B,R).
但是它用
返回falsecustom_append(X,Y,[X|Y]).
我该如何实现?
答案 0 :(得分:1)
请注意,B
不是要对其进行迭代的列表,您想将A
的元素追加到同一列表B
。
最简单的方法可能是将custom_append/3
中的元素顺序交换为:
custom_append(Y, X, [X|Y]).
然后我们可以使用maplist/3
来获得它:
maplist(custom_append(B), A, R).
因此,我们已经做出了与部分应用非常相似的行为:我们传递了函子custom_append(B)
,然后Prolog将使用custom_append(B, Ai, Ri)
进行调用({{1 }}和Ai
在这里用来表示列表Ri
和A
的元素。
答案 1 :(得分:0)
直接的方法是这样的:
append_list([], _, []).
append_list([A|As], B, [[A|B]|Cs]) :-
append_list(As, B, Cs).
甚至不需要使用maplist
。