rns*_*nso 6 prolog prolog-setof
如何选择bagof,setof和findall?有什么重要的区别吗?哪个最常用,哪个最安全?感谢您的意见/解答.
我检查了SWI-Prolog手册页findall/3,发现它们非常相似.
这是一个很好的问题!
我不想给出详尽的答案,但是我想提出一些思路,可以帮助您更好地理解这些谓词:
findall/3的方面setof/3?那反过来呢?这有助于查看您至少需要提供什么来实现所有这些谓词。另外,我建议您阅读Richard O'Keefe的书The Prolog of Prolog,以获取有关这些谓词的有价值的信息。
findall/3我发现和之间的一个重要区别bagof/3是,后者不会复制它积累的术语。例如,如果您的列表收集属性变量(例如使用 建模问题时),这可能至关重要library(clpfd)。