我不熟悉剪辑,我发现我的retract
并没有真正删除事实。
(defrule test
(select ?select~indoor&~outdoor)
=>
(retract ?select)
)
剪辑运行此代码后,我尝试使用(facts)
进行检查,但我仍然发现事实select
仍然存在
答案 0 :(得分:1)
您需要将变量绑定到与模式匹配的事实。您不能通过将变量绑定到事实内部的值来撤回事实。
CLIPS (6.31 2/3/18)
CLIPS>
(defrule test
?f <- (select ...)
=>
(retract ?f))
CLIPS> (assert (select ...))
<Fact-1>
CLIPS> (facts)
f-0 (initial-fact)
f-1 (select ...)
For a total of 2 facts.
CLIPS> (run)
CLIPS> (facts)
f-0 (initial-fact)
For a total of 1 fact.
CLIPS>