如何选择bagof,setof和findall?有什么重要的区别吗?哪个最常用,哪个最安全?感谢您的意见/答案。
我检查了SWI-Prolog manual page on findall/3
并发现它们非常相似。
答案 0 :(得分:4)
这是一个很好的问题!
我并非试图给出详尽的答案,但我想提出一些思路,可以帮助您更好地理解这些谓词:
findall/3
来表达setof/3
吗?那反过来呢?这有助于了解您需要提供至少来实现所有这些谓词。此外,我建议您阅读Richard O'Keefe的书 The Prop of Colog ,以获取有关这些谓词的有价值信息。
答案 1 :(得分:1)
我在findall / 3和bagof / 3之间发现了一个重要的区别,后者并没有复制它在列表中累积的术语。这可能是基础,例如,当您的列表将收集属性变量时,就像您在使用库(clpfd)建模问题时使用的那样。