2

SWI-Prolog で AND 演算子を再定義したい。しかし、私はそれを行う方法がわかりません。次の定義を試しました。

a & b = b & a

ただし、再帰的であると報告され、機能しません。人々が私に提案をしてくれることを願っています。前もって感謝します!

4

2 に答える 2

2

op/3プログラムに以下を追加するなどして、を使用して SWI-Prolog で演算子を定義できます。

:- op(1000, xfy, user:(&)).

優先レベル ( 1000) とタイプ ( xfy) は、SWI-Prolog で既に定義されている結合演算子 (つまり、 を参照','/2) と同じであることに注意してください。

次に、宣言したら、次のようにセマンティクスを定義できます&

'&'(A,B) :- A, B.

これらの 2 つの定義を一緒に使用すると、それらを組み込んだプログラムで結合を意味&する代わりにインラインを使用できます。,

于 2012-07-24T06:39:21.520 に答える
1

and次のように「定義」できます。

and(t,X,X) :- bool(X).
and(f,X,f) :- bool(X).
bool(t).
bool(f).  

3 番目の引数は、1 番目と 2 番目の引数を結合した結果です。

もちろん、これは単なる演習ですが、あなたの質問が何であるかがあまり明確ではないため、実際にあなたの質問に答えるのは難しいです.

于 2012-07-10T16:40:48.190 に答える