Prolog の初心者として、Prolog の可換式はまったく直感的ではないことがわかりました。
たとえば、X と Y が 1 つのファミリに属していることを表現したい場合は、次のようになります。
family(X,Y) :-
married(X,Y);
relative(X,Y);
father_son(X,Y).
また、「交換可能」にするために、定義に次を追加する必要があります。
married(Y,X);
relative(Y,X);
father_son(Y,X).
しかし、エレガントなコードを書きたいので、Prologを使用しています...したがって、元のコードに(上記の3行ではなく)1行だけ追加したいと思います:
family(Y,X).
ここがPOINTです。それは未終了につながります!プロローグがそれほど「論理的」ではないのはなぜですか? そして、未終了につながらない、このきちんとした 1 行の表現に代わるものはありますか?
素敵な週末を!ワット