サーチ…


論理和(論理和)、暗黙的対Explicit

Prologは、出現順に述語の代替句を試行します。

likes(alice, music).
likes(bob, hiking).

// Either alice likes music, or bob likes hiking will succeed.

disjunction(OR)演算子;これを1つのルールで表現するために使用できます。

likes(P,Q) :-
    ( P = alice , Q = music ) ; ( P = bob , Q = hiking ).

分かりやすくするために、かっこが重要です。参照してください相対的優先順位にこの質問を併用について,および論理和;

結合(論理積)

結合詞(論理AND)は、カンマ,演算子(他の役割の中でも)で表されます。

句の間には、次のような問合せを含めることができます。

?- X = 1, Y = 2.

結合詞は、ルール本体のサブゴール句の間にも現れます。

triangleSides(X,Y,Z) :-
    X + Y > Z, X + Z > Y, Y + Z > X.

カット(選択点を削除)

Prologが代替ソリューションに後戻りするのを防ぐことが望ましい場合もあります。プログラマーがプロローグを中止するために利用できる基本的なツールは、後ろ向きに進むことから、カットオペレータです。以下を考慮する。

% (percent signs mean comments)
% a is the parent of b, c, and d.
parent(a,b).
parent(a,c).
parent(a,d).

ここで、述語parent/2は、

?- parent(a,X).

が呼び出されます。最初のプロローグが見つかった後、プロローグがより多くのソリューションを検索するのを止めるには、cut演算子を使用します。

?- parent(a,X), !.

これは、(最初​​の可能な解決策であるように)Xとbを等しくし、それ以上解決策を探すことはありません。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow