剪辑如何使规则匹配除一个以外的所有人

clips how to make rule match forall but one

我如何制定规则来测试 deftemplate 中的所有事实是否符合特定条件?

示例:与

(deftemplate person (field name)(field hair-color))

有几个金发女郎,只有一个不是

得到

(printout t "Only " ?name-not-blond " is not blonde" crlf)
         CLIPS (6.4 2/9/21)
CLIPS> 
(deftemplate person
   (slot name)
   (slot hair-color))
CLIPS>  
(defrule only-one-not-blonde
   (person (name ?name-not-blonde)
           (hair-color ~blonde))
   (not (person (name ~?name-not-blonde)
                (hair-color ~blonde)))
   =>
   (println "Only " ?name-not-blonde " is not blonde."))
CLIPS>         
(deffacts initial
   (person (name Sue) (hair-color blonde))
   (person (name Frank) (hair-color blonde))
   (person (name Josh) (hair-color brown)))
CLIPS> (reset)
CLIPS> (facts)
f-1     (person (name Sue) (hair-color blonde))
f-2     (person (name Frank) (hair-color blonde))
f-3     (person (name Josh) (hair-color brown))
For a total of 3 facts.
CLIPS> (agenda)
0      only-one-not-blonde: f-3,*
For a total of 1 activation.
CLIPS> (assert (person (name Anne) (hair-color red)))
<Fact-4>
CLIPS> (agenda)
CLIPS>