選言(disjunction)
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

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のプログラムとして読み易いでしょう。


Up read on...