Prolog追加清单

时间:2011-10-22 08:45:46

标签: prolog

我有附加列表的问题。

find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), 
                             append([Path], List, Result), 
                             fail.

路径是一个列表。

我将获得n个失败的路径, 但如果我把写(结果),它将打印[[...],H234] n次。

如何告诉prolog使用上一次迭代的结果并与之一起追加 每次失败的新途径?

1 个答案:

答案 0 :(得分:2)

变量List是免费的,因此不出所料地打印了将路径([...])附加到变量(H234)的结果。改进代码的最简单方法是

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

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