我在另一个程序中嵌入了CLIPS,并且主要将它用作推理引擎。我的规则条件使用logical
关键字,因此当规则不受支持时,会自动收回作为规则动作的任何事实(BPG第5.4.8节)。我通常需要检查所有类型为foo
的事实(其中foo
是事实的第一个字段,例如(foo bar baz)
)。要做到这一点,我一直在解析整个事实清单,但是这样做已经成为经济放缓的重要原因。当事实失去支持时,CLIPS回调
我关心的每一个事实都是在自己的规则中声明的,所以我想过在每个规则中使用回调来通知我的程序,我感兴趣的事实已被声明,但是这只会告诉我当事实被宣称时,而不是当它被收回时。我试图想出一种写反规则的方式,当事实变得不受支持时会触发,但是我一直没能想出有用的东西。我已经尝试了用not
包装整个规则条件的明显方法,但是这不允许您使用not
子句之外的变量,这是我需要使回调正常工作的变量。
是否有一种显而易见的方式来查询foo
类型的所有事实,而不是迭代事实列表?或者当规则/事实失去支持时,有没有办法获得回调?似乎这应该是相当容易做的,有什么我在这里失踪?