abolish/1
指定された述語のすべての句をデータベースから削除します。したがって、abolish(PredName/Arity)
この述語に関する情報を削除する必要があるときはいつでも呼び出しを追加するだけです。動的述語の呼び出しを廃止した後は失敗せず、エラーが報告されることに注意してください。
12 ?- f(X,Y).
false.
13 ?- assert(f(a,b)).
true.
14 ?- f(X,Y).
X = a,
Y = b.
15 ?- abolish(f/2).
true.
16 ?- f(X,Y).
ERROR: user://2:67:
toplevel: Undefined procedure: f/2 (DWIM could not correct goal)
SWI-Prolog ではabolish
、prolog フラグが true に設定されていない限り、静的プロシージャで機能しiso
ます。動的述語のみを削除する場合は、 を試してくださいretractall
。この場合、削除してもエラーが報告されるのではなく、失敗することに注意してください。
17 ?- [user].
:- dynamic f/2.
|:
% user://3 compiled 0.00 sec, 264 bytes
true.
18 ?- f(X,Y).
false.
19 ?- assert(f(a,b)).
true.
20 ?- f(X,Y).
X = a,
Y = b.
21 ?- retractall(f(X,Y)).
true.
22 ?- f(X,Y).
false.