如何在prolog中添加到列表的末尾

Meo*_*eow 7 prolog

我试图在prolog的列表末尾添加一个项目,但它一直在失败.

insertAtEnd(X,[ ],[X]).
insertAtEnd(X,[H|T],[H|Z]) :- insertAtEnd(X,T,Z).    

letters([a,b,c]).
Run Code Online (Sandbox Code Playgroud)

我不明白为什么以下这个不起作用.

insertAtEnd(d,letters(Stored),letters(Stored)). 
Run Code Online (Sandbox Code Playgroud)

我也试图将此列表存储在整个存储的变量中,但我不确定上述是否是正确的继续方式.

koc*_*hav 5

您可以使用追加 并将您的项目作为第二个列表

像这样:

insertAtEnd(X,Y,Z) :- 追加(Y,[X],Z)。

  • 虽然这可能是解决问题的宝贵提示,但答案确实需要比这更详细的信息。请[编辑]解释这将如何解决问题。或者,考虑将其写为评论。 (2认同)

Cap*_*liC 4

Prolog实现了关系计算模型,变量只能实例化,不能赋值。尝试

?- letters(Stored),
   insertAtEnd(d, Stored, Updated),
   write(Updated).
Run Code Online (Sandbox Code Playgroud)