Prolog 序言附加列表

Prolog 序言附加列表,prolog,Prolog,我对附加列表有问题 find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), append([Path], List, Result), fail. 路径是一个列表 我将为失败找到n条路径, 但如果我输入write(Result),它将打印这个[…],H234]n次 如何告诉prolog使用上一次迭代的结

我对附加列表有问题

find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), 
                             append([Path], List, Result), 
                             fail.
路径是一个列表

我将为失败找到n条路径, 但如果我输入write(Result),它将打印这个[…],H234]n次

如何告诉prolog使用上一次迭代的结果并与
每次失败都会有一个新的路径?

变量列表是免费的,因此毫不奇怪,会打印将路径([…])附加到变量(H234)上的结果。改进代码的最简单方法是

find_paths(Start, Finish, List) :- 
       findall(Path, path(Start, Finish, [Start], Path), List).

或者,您可以更改路径/4的定义以累积结果。

请添加一些有关您获得的内容和想要的内容的信息。我想我明白了。我使用抵销,所以它以列表的形式返回所有解决方案。