2つのゴ−ルの選言(論理和OR)は、ゴ−ルの間にセミコロン「;」を入れることで表されます。
?- [user]. | is_subordinate_to('White','New'). | end_of_file. | consult: file stdin consulted in 22 sec. yes ?- is_subordinate_to('White','Johnson'); is_subordinate_to('White','New'). yes ?- _
最初のゴ−ルが失敗すると2番目のゴ−ルが評価され成功し、全体のゴ−ルが成功となります。しかし、節の中に「カット」が使われていると、最初の「:-」に(左側を探して)ぶつかるまでにつくられた全ての選択点が破棄されます。
選言節
A :- (!, fail ; B). は、
A :- !, fail. と等価です。
A :- B. と等価ではありません。これはBを決して呼び出さないからです。
「;」の使用は、できる限り避けた方がいいでしょう。通常のPrologの構文を使っていれば、述語の節の間は暗黙のORで結ばれていると考えられます。
つまり a(b,c) :- ( d;e ). は、 a(b,c) :- d. a(b,c) :- e. と等価です。
特に大きな節には、2番目の方がPrologのプログラムとして読み易いでしょう。