如何在 deffunction 中检索剪辑中的事实索引?
How do I retrieve fact index in clips in a deffunction?
(deffunction up ()
?fact <- u
(retract ?fact)
(assert (u green))
)
我试图让这样的东西工作,一个改变事实状态的函数,但是它给了我一个错误,比如?fact is not defined。但是我已经做到了。为什么这不起作用?
函数通过其参数接收输入。规则通过它们的模式接收输入。如果要模式匹配,请使用规则:
(defrule up
?fact <- (u)
=>
(retract ?fact)
(assert (u green)))
或者,如果您需要为 deftemplate 迭代现有的事实集,您可以使用事实集查询函数(do-for-fact,do-for-all-facts,...):
(deffunction up ()
(do-for-fact ((?fact u)) TRUE
(retract ?fact))
(assert (u green)))
(deffunction up ()
?fact <- u
(retract ?fact)
(assert (u green))
)
我试图让这样的东西工作,一个改变事实状态的函数,但是它给了我一个错误,比如?fact is not defined。但是我已经做到了。为什么这不起作用?
函数通过其参数接收输入。规则通过它们的模式接收输入。如果要模式匹配,请使用规则:
(defrule up
?fact <- (u)
=>
(retract ?fact)
(assert (u green)))
或者,如果您需要为 deftemplate 迭代现有的事实集,您可以使用事实集查询函数(do-for-fact,do-for-all-facts,...):
(deffunction up ()
(do-for-fact ((?fact u)) TRUE
(retract ?fact))
(assert (u green)))