您如何测试Clips规则 RHS 中的事实存在?我正在尝试设计一个规则,通过计算存在多少目标事实来“评分”当前状态。如何在 LHS 中测试事实很明显,但我找不到如何在 RHS 中进行等效测试。
我想做这样的事情,尽管这不是有效的剪辑代码:
(defrule score-state ""
?score <- (score (value ?value))
=>
(modify ?score (value (+ (exists (goal-1)) (exists (goal-2)) (exists (goal-3))))))
因此,如果不存在任何目标状态,那么就会存在事实(分数(值 0))。相反,如果所有目标状态都存在,那么就会存在事实(分数(值 3))。
参考手册中提到了 fact-existp 函数,但这似乎需要传递一个事实地址。我尝试像 (fact-existp (goal-1)) 一样使用它,但 Clips 给了我一个语法错误。