【问题标题】:How to completely remove a predicate in Prolog?如何完全删除 Prolog 中的谓词?
【发布时间】:2020-10-01 17:49:44
【问题描述】:

我的谓词color/2 具有以下事实:

color(omlette, yellow).
color(tomato, red).
color(cucumber, green).
...

现在我想将它从系统中完全删除,即我希望 current_predicate(color/2) 失败。 然而,即使我retractall(color(_, _)),实际上与color 相关的所有事实都被删除,current_predicate(color/2) 仍然会成功。

我怎样才能让它失败?

【问题讨论】:

    标签: prolog predicate


    【解决方案1】:

    使用abolish/1 完全删除过程及其属性的所有子句:

    abolish(color/2).
    

    根据您的 prolog 处理器,您可能必须指出该过程是动态的,在您的示例中

    :-dynamic(color/2).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多