0

私は 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 を使用するにはどうすればよいでしょうか。

4

0 に答える 0