在Prolog中使用append

时间:2014-03-12 10:40:38

标签: prolog append

我是Prolog的新手,我正在尝试使用'追加'。我正在尝试编写一个非常简单的程序,它接受列表的第一项,并将其添加到空列表L中。

有人请向我解释为什么这不起作用?!

add_first([A|_],L) :- append(A,_,L).

另一个快速问题。

为什么这段代码有效?

add_first([A|B],L) :- append(B,A,L).

但这段代码不是吗?

add_first([A|B],L) :- append(A,B,L).

非常感谢。

1 个答案:

答案 0 :(得分:1)

好吧,A是列表[A|B]的头部,B是子列表。 A是一个元素,所以如果你读了append的定义:

append([],L,L).
append([H|T],L2,[H|L3]) :- append(T,L2,L3).

你会明白列表的第一个参数是一个列表。所以你不能给出一个元素。

append(A,B,L)错了。