我试图收回所有形式的事实:
(<something> task-error)
要做到这一点,我写了规则:
(defrule retract-task-error "retract task error"
(declare (salience -1000))
?f <- (?n task-error)
=>
(retract ?f)
)
但它不适用于错误:
[PRNTUTIL2] Syntax Error: Check appropriate syntax for the first field of a pattern.
是否有可能使用CLIPS完成此任务,或者我是否需要重新安排代码以避免匹配事实的第一个字段?
答案 0 :(得分:1)
模式的第一个字段必须是符号。最简单的解决方案可能是在所有可能包含任务错误的事实和模式的开头添加一个公共符号(例如任务):
(defrule retract-task-error "retract task error"
(declare (salience -1000))
?f <- (task ?n task-error)
=>
(retract ?f)
)