我正在使用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?