Prolog:追加内部循环失败

时间:2015-05-31 10:33:46

标签: prolog

我有以下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

关于如何解决这个问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

如果L是术语,则可以替换:

 %append(L,List,List_New),

使用:

 List_New=[L|List],
相关问题