2

我无法理解 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].
4

1 回答 1

1

看看这个

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]

在您的情况下,您只需要重新排序参数!

于 2013-04-27T14:54:46.813 回答