CLIPS defrules比较两个变量的值

时间:2015-02-19 11:18:47

标签: clips

我想编写一条说明以下内容的规则

if x > y => assert x

其中xy是变量,其值是作为事实给出的。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果x已经作为事实存在,那么从规则的操作中再次断言它是不必要的,但是如果你想断言表明x大于y的事实那么你可以这样做:

CLIPS> 
(defrule greater-than
   (x ?x)
   (y ?y)
   (test (> ?x ?y))
   =>
   (assert (x-is-greater-than-y)))
CLIPS> (assert (x 4))
<Fact-1>
CLIPS> (assert (y 1))
<Fact-2>
CLIPS> (agenda)
0      greater-than: f-1,f-2
For a total of 1 activation.
CLIPS> (run)
CLIPS> (facts)
f-0     (initial-fact)
f-1     (x 4)
f-2     (y 1)
f-3     (x-is-greater-than-y)
For a total of 4 facts.
CLIPS>