0
(deffunction up()
?fact <- u
(retract ?fact)
(assert (u green))
)
我試圖得到像這樣的工作,一個函數來改變事實的狀態,但是它給了我一個類似的錯誤?事實沒有定義。但我已經做了這個決定。爲什麼這不起作用?如何在檢索中檢索剪輯中的事實索引?
(deffunction up()
?fact <- u
(retract ?fact)
(assert (u green))
)
我試圖得到像這樣的工作,一個函數來改變事實的狀態,但是它給了我一個類似的錯誤?事實沒有定義。但我已經做了這個決定。爲什麼這不起作用?如何在檢索中檢索剪輯中的事實索引?
函數通過參數接收輸入。規則通過他們的模式接收輸入。如果你想要模式匹配,使用規則:
(defrule up
?fact <- (u)
=>
(retract ?fact)
(assert (u green)))
或者,如果你需要遍歷一個自定義模板中現有的一組事實,你可以用事實設置查詢功能(做換事實上,做所有事實......):
(deffunction up()
(do-for-fact ((?fact u)) TRUE
(retract ?fact))
(assert (u green)))