我是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).
非常感谢。
答案 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)
错了。