私のPrologプログラムblanket(X,Y)
には、Xが特定の種類のYのセットに含まれているかどうかをチェックするというルールがあります。
- Yの両親
- Yの子供たち
- Yの共同養育
私はそれを次のように定義しました:
blanket(Y,X) :- different(Y,X),parent(Y,X);child(Y,X);coparent(Y,X).
ただし、これは期待どおりに機能しません。Xの親、子、および共同養育者(存在する場合)を正しく識別しますが、それ自体を親と共同養育者の両方としてリストします。これは私が望んでいないことです。different(Y,X)
評価が最初に独立して行われるように、ある種の順序を設定することは可能ですか?もちろん、 :のようなものを試しましdifferent(Y,X),(parent(Y,X);child(Y,X);coparent(Y,X)).
たが、まだ言語に慣れていないため、構文エラーが発生します。
任意の提案をいただければ幸いです。
編集:ここに、、、child
およびdifferent
関係coparent
があります:
child(X,Y) :- parent(Y,X).
different(X,Y) :- not(X == Y).
coparent(Y,X) :- parent(Y,Z),parent(X,Z).
完全を期すために。