Prolog:追加在循环内失败

Prolog: append is failing inside loop

我有以下序言代码:

my_function(A):-
   my_function(A,[],1).

my_function(A,List,Num):-
   Num_new is Num+1,
   generateL(O,S,L),
   write(L),nl,
   %append(L,List,List_New),
   (  Num_new < 20 -> my_function(A,List_New,Num_new)  ).

这是有效的。它循环 19 次,调用 generateL 生成一个新术语 L,我将其打印到屏幕上。

我现在希望在每次迭代中将 L 附加到列表 List 以创建一个新列表 List_New 然后在递归循环中作为 List 这样在下一次迭代中,这是 L 再次附加到的列表。

我试图通过编写上面注释掉的 append 语句来做到这一点。问题是这条语句失败了——我相信是因为 List_New 不被视为一个变量,而是一个预先存在的列表,因此 append 正在测试 List_New 是否确实是 LList 附加在一起,而不是创建一个新列表 List_New.

关于如何解决这个问题有什么想法吗?谢谢!

如果L是一个词,你可以替换:

 %append(L,List,List_New),

与:

 List_New=[L|List],