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.
retractは、assertの逆の動作を行う述語です。
IF/Prologでは、データベースから節を取り消すように指示することができます。組み込み述語retract(節)はこのために使用されます。これは、retractの引数として渡された節の記述と一致する節で、データベース中で最初に見つけたものだけを削除します。以下のように節を削除し、データベースを見てみましょう。
?- retract(X reports_to 'Smith'),
listing(reports_to).
'White' reports_to 'Jones'.
'McDonald' reports_to 'Jones'.
'Newman' reports_to 'Smith'.
'Nixon' reports_to 'Smith'.
'Smith' reports_to 'New'.
'Jones' reports_to 'New'.
X = 'Hill' ; <-- IF/Prologはリターンか`;'の入力を待ちます
`;'を押してから改行して下さい。
'White' reports_to 'Jones'.
'McDonald' reports_to 'Jones'.
'Nixon' reports_to 'Smith'.
'Smith' reports_to 'New'.
'Jones' reports_to 'New'.
X = 'Newman' <-- IF/Prologはリターンか`;'の入力を待ちます。
改行して下さい。
yes
?-
述語retractがバックトラック可能なので、';'が入力されるとIF/Prologはバックトラックし、"X reports_to 'Smith'"に一致する別の節を捜し出します。この結果、節"'Newman' reports_to 'Smith'"を捜しだして削除しました。
節の削除には、組み込み述語abolish(関数子,引数の数)を用いることもできます。これは、名前が「関数子」で引数の数が「引数の数」である手続きを定義するすべての節を削除します(レファレンスマニュアルのabolishの項を参照して下さい)。
|