Prolog Language
制御構造
サーチ…
論理和(論理和)、暗黙的対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