在用户回答的 defrule 中增加全局变量

Incrementing a global variable within a user answered defrule

如果用户使用(读取)函数定义他们有疼痛,我正在尝试将 defglobal 变量 (symcount) 递增 1

(defrule QPain
         (initial-fact)
         =>
         (printout t "Are You In Pain? " crlf) 
         (bind (ans Answer) (read)) 
         )
(defrule AnsInc
         (Answ Answer = "y")
         =>
         (bind ?*symcount* (+ ?*symcount* 1))) 

增量只能在用户按下 "y" 时发生 否则不能增加。

CLIPS> (defglobal ?*symcount* = 0)
CLIPS> 
(defrule QPain
   =>
   (printout t "Are You In Pain? ") 
   (bind ?answer (read))
   (if (eq ?answer y)
      then
      (bind ?*symcount* (+ ?*symcount* 1))))
CLIPS> (reset)
CLIPS> (run)
Are You In Pain? y
CLIPS> ?*symcount*
1
CLIPS> (reset)
CLIPS> (run)
Are You In Pain? n
CLIPS> ?*symcount*
0
CLIPS>