not(+ゴール)
「ゴール」が成功ならば、not「ゴール」は失敗となり、逆に「ゴール」が失敗ならば、not「ゴール」は成功となります。
従って、「ゴール」内の変数は決して値を持ちません。「ゴール」が成功の場合でも、not「ゴール」の変数は値を持ちません。
つまり not not 「ゴール」
が成功すれば、「ゴール」が正しいことをその変数に値を与えなくてもチェックすることができます。
IF/Prologでは、not/1は前置オペレ−タです。これは以下のように定義されています。
:- op(900,fy,not).
not Goal :- execute(Goal), !, fail. not Goal.
not/1の定義が、IF/Prologバージョン3.4とバージョン4.0では少し違います。IF/Prologバージョン3.4では、ゴール中のカットはnot/1の第1ゴールに影響を与えることがありましたが、IF/Prologバージョン4ではこのようなことが生じないようになっています。
| scroll to top |
|