问题描述
我有以下事实的谓词color/2
:
color(omlette,yellow).
color(tomato,red).
color(cucumber,green).
...
现在我想将其从系统中完全删除,即我希望current_predicate(color/2)
失败。
但是,即使我retractall(color(_,_))
,并且确实删除了与color
相关的所有事实,current_predicate(color/2)
仍然会成功。
如何使其失败?
解决方法
使用abolish/1完全删除过程的所有子句及其属性:
abolish(color/2).
在您的示例中,根据您的序言处理器,您可能必须指示该过程是动态的
:-dynamic(color/2).