如何完全删除 Prolog 中的谓词?
How to completely remove a predicate in Prolog?
我的谓词 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).
根据您的 prolog 处理器,您可能必须指出该过程是动态的,在您的示例中
:-dynamic(color/2).
我的谓词 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).
根据您的 prolog 处理器,您可能必须指出该过程是动态的,在您的示例中
:-dynamic(color/2).