将所有从谓词生成的列表添加到末尾的一个大列表中

问题描述 投票:1回答:1

我有一个函数,它为每次迭代生成一个列表。(因此在查询末尾会生成许多列表)。

是否有可能将所有生成的列表收集到谓词循环之外的一个大列表中?

?- path(i,k,Path).

Path = [segmentTime(red,i,m,2),segmentTime(blue,m,j,4),segmentTime(blue,j,k,2)] ? ;

Path = [segmentTime(blue,i,m,3),segmentTime(blue,m,j,4),segmentTime(blue,j,k,2)] ? ;

Path = [segmentTime(purple,i,j,3),segmentTime(blue,j,k,2)] ? ;

变成类似

AllPaths = [[segmentTime(red,i,m,2),segmentTime(blue,m,j,4),segmentTime(blue,j,k,2)], 
         [segmentTime(blue,i,m,3),segmentTime(blue,m,j,4),segmentTime(blue,j,k,2)], 
         [segmentTime(purple,i,j,3),segmentTime(blue,j,k,2)]]

*我的代码很复杂,因此像[1,2,3,4,5]这样的简单示例的摘要代码就足够了。

list recursion prolog predicate
1个回答
0
投票

您可以使用setof内置谓词。我已经在下面链接了它的工作方式。

© www.soinside.com 2019 - 2024. All rights reserved.