assert
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.

asserta(+節) asserta(+ヘッド,+ボディ) asserto(+節,+引数の位置_式) asserto(+ヘッド,+ボディ,+引数の位置_式) assertz(+節) assertz(+ヘッド,+ボディ)

どの形式のassert類も、述語のデ−タベ−スに追加を行います。節は、存在しているその述語の節に従って、特定の順序で追加されます。述語が存在しない場合にはassert類によって生成されます。追加された節は、バックトラックが起きても取り消されません。

追加される節は、節あるいはヘッドとボディの組み合せとして指定できます。つまりその引数は、どんな項でもよいのです。値を持たない変数は、デ−タベ−ス中で、例えば _2124, _2336 といった内部変数に置き換えられます。

assertaは、「節」あるいは「ヘッド:- ボディ」という節を述語定義の先頭に追加します。

assertoは、「節」あるいは「ヘッド:- ボディ」という節を、引数の位置_式番目の引数の値に従ってデ−タベ−ス上に追加します。その結果デ−タベ−ス上には、引数の位置_式番目の引数の値が小さい順に述語が並びます。

assertzは、「節」あるいは「ヘッド:- ボディ」という節を述語の定義の最後に追加します。

?- assertz(t(a,6) :- fail), asserta(t(b,3) :- true), asserto(t(c,4),(write('t/c/4'),fail),2).

yes ?- listing(t). t(b,3). t(c,4) :- write('t/c/4'), fail. t(a,6) :- fail.

yes ?- _

illegal_predicate 引数が複合項でない out_of_range 「引数の位置_式」が大きすぎるか、あるいは小さすぎる integer_expected 「引数の位置_式」が整数でない not_modifiable 述語が変更できない


Up read on...