【发布时间】:2020-08-28 19:40:58
【问题描述】:
我们正在使用前向链接规则系统,我们必须向系统灌输决策所需的数据。我希望规则系统可以提出问题以获取决策所需的数据。在Jess 中,这似乎可以通过神奇的“need-”前缀实现:
(defrule create-member
(need-member $?)
=>
(assert (member A B))) ; eg. DB call to check membership, if needed for goal finding.
(defrule rule-1
(member ?A ?B)
=>
(printout t member crlf))
使用此解决方案,不需要的事实不会被提取。此外,显着性可用于帮助避免更昂贵的事实查找(例如远程调用),还可以保留代码DRY
虽然 Jess 似乎可以解决这个问题,但首选免许可的 Clojure 解决方案。但是,例如 clojure.logic 如何实现这一点却很模糊。 Clara 使用前向链接,这似乎是不行的,但可能通过规则生成,类似 Jess 的 hack 是可能的?
真的在寻找一个在 Clojure 中做类似的例子。
【问题讨论】:
标签: clojure clojure-core.logic clara-rule-engine