我无法理解prolog如何使用列表。我正在尝试编写一个函数,它将向给定列表添加尾部并返回一个新列表。但我的实现不起作用,我无法理解如何解决它。这就是我所拥有的:
% add_tail(L,M,E) :- L is M with [E] appended.
% I wanna do this without using the append predicate
add_tail([E],[],E).
add_tail(List, [H|T], E):-
add_tail(List1, T, E),
List is [H|List1].
澄清我想要这个函数做什么,这是一个输出的例子:
?- add_tail(L,[1,2,3],4).
L = [1,2,3,4].
答案 0 :(得分:1)
检查this:
append([X|Y],Z,[X|W]) :- append(Y,Z,W).
append([],X,X).
第二行(append([],X,X)
)简单地指出将元素X
附加到空列表等于该元素本身(中断条件)。第一行表示将Z
附加到列表[X|Y]
(X
是头部,Y
休息)会产生新列表[X|W]
,而W
}是将Z
追加到Y
的结果。
示例强>
?- append([1,2,3],[4],L).
L = [1,2,3,4]
在您的情况下,您只需要重新排序参数!