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
是否确实是 L
和 List
附加在一起,而不是创建一个新列表 List_New
.
关于如何解决这个问题有什么想法吗?谢谢!
如果L是一个词,你可以替换:
%append(L,List,List_New),
与:
List_New=[L|List],
我有以下序言代码:
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
是否确实是 L
和 List
附加在一起,而不是创建一个新列表 List_New
.
关于如何解决这个问题有什么想法吗?谢谢!
如果L是一个词,你可以替换:
%append(L,List,List_New),
与:
List_New=[L|List],