SWI-Prolog で AND 演算子を再定義したい。しかし、私はそれを行う方法がわかりません。次の定義を試しました。
a & b = b & a
ただし、再帰的であると報告され、機能しません。人々が私に提案をしてくれることを願っています。前もって感謝します!
SWI-Prolog で AND 演算子を再定義したい。しかし、私はそれを行う方法がわかりません。次の定義を試しました。
a & b = b & a
ただし、再帰的であると報告され、機能しません。人々が私に提案をしてくれることを願っています。前もって感謝します!
op/3
プログラムに以下を追加するなどして、を使用して SWI-Prolog で演算子を定義できます。
:- op(1000, xfy, user:(&)).
優先レベル ( 1000
) とタイプ ( xfy
) は、SWI-Prolog で既に定義されている結合演算子 (つまり、 を参照','/2
) と同じであることに注意してください。
次に、宣言したら、次のようにセマンティクスを定義できます&
。
'&'(A,B) :- A, B.
これらの 2 つの定義を一緒に使用すると、それらを組み込んだプログラムで結合を意味&
する代わりにインラインを使用できます。,
and
次のように「定義」できます。
and(t,X,X) :- bool(X).
and(f,X,f) :- bool(X).
bool(t).
bool(f).
3 番目の引数は、1 番目と 2 番目の引数を結合した結果です。
もちろん、これは単なる演習ですが、あなたの質問が何であるかがあまり明確ではないため、実際にあなたの質問に答えるのは難しいです.