我有以下Prolog代码:
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
不被视为变量,而是被视为预先存在的列表,因此追加是测试List_New
是否确实L
并且List
附加在一起,而不是创建新列表List_New
。
关于如何解决这个问题的任何想法?谢谢!
答案 0 :(得分:0)
如果L是术语,则可以替换:
%append(L,List,List_New),
使用:
List_New=[L|List],