我正在使用 SWI prolog,并且想知道如何在我的源代码中使用 setof。
我有一个文件:prolog_example.pl
其中有一些事实:
stuff(hello,1,2,west).
stuff(goodbye,3,4,west).
stuff(how,5,6,north).
stuff(are,7,8,north).
canMatch(X,Y):-
stuff(X, _, _, XZ),
stuff(Y, _, _, YZ),
X \= Y.
现在我想在不同的列表中获取所有西部和北部团队的集合。所以我放了:
setof(X-Y, canMatch(X,Y), ListOfMatches).
在我的源代码中。但是,当我尝试在 SWI-Prolog 中编译或运行它时,我最终得到了这个错误:
ERROR: prolog_example.pl:37:
No permission to modify static procedure `setof/3'
但是,如果我在加载文件后将 setof 设置为查询(并且我取出我的 setof 行),我会得到我想要的正确答案。那么如何在我的源代码中使用 setof 呢?