Как вы разыгрываете слот в факте, подобранном в LHS правила? Если переменная соответствует факту, я не могу найти, как создать дополнительные условия, чтобы соответствовал слотам в этом факте.Вызов слота в совпадающем факте на клипах
Например, в приведенном ниже коде я хочу напечатать некоторый текст, если есть факт формы "(do (action? Action))". Однако действие «сам по себе является фактом», и я хочу, чтобы это правило было инициировано только в том случае, если этот «слот» имени «работает». Как бы я это сделал?
(deftemplate do
(slot action)
)
(deftemplate action
(slot name)
)
(defrule find-do ""
?do <- (do (action ?action))
(test (eq ?action.name "run")) ; This causes a syntax error.
=>
(printout t "doing " ?action crlf)
)
(deffacts startup (do (action (action (name "running")))))