私は SWI プロローグを使用しており、ソース コードで 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 を使用するにはどうすればよいでしょうか。