defrule rhs semantics
Hi. In the KW documentation for defrule, I read that "(<lisp-expr> <term>*) binds the result or results of calling <lisp-expr> to the <term> s with execution of the rule terminating if any bindings fail (if no <term> s are given execution will always continue)." I read this to mean that if <lisp-expr> returns NIL for any of the bindings, then this rule's execution will stop. That's what I want, but apparently I misunderstand the doc. Given this scenario: (defrule frodo :forward (hobbit ?hobbit) --> ((find-frodo ?hobbit) ?frodo) ((format t "Rule FRODO fired!~%"))) I had hoped that if FIND-FRODO returned NIL, the ?frodo binding would fail and execution of this rule's rhs would not continue. However, that isn't the case; execution continues regardless, so I clearly don't understand. Please offer clarification if you can. Thanks... David E. Young Bloodhound Software, Inc. http://bloodhoundinc.com "For wisdom is more precious than rubies, and nothing you desire can compare with her." -- Prov. 8:11 "But all the world understands my language." -- Franz Joseph Haydn (1732-1809)