测试空变量

时间:2012-06-22 18:44:13

标签: clips

我有两个筹码,一个目标和一个我正在改变的筹码。当我完成目标堆栈的每一步时,我从中删除一个字段。我知道当堆栈现在为空时我已经完成了一个特定的目标。我正在尝试编写一个规则来测试变量何时为空,但我一直收到错误:[EXPRNPSR1]函数名必须是符号。这是我的规则。

(defrule done
   (declare (salience 30))
   ?stack <- (curr-stack $?thusfar)
   ?goal <- (goal-stack ?H)
   (test (= ?H ()))
=>
   (retract ?stack ?goal))

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:0)

$?foo是一个多字段变量(其中包含0个或更多内容)。 ?foo是单个字段变量(仅限1件)。

因此,测试?foo的“空虚”对你的筹码表示不会对你有好处。

我的多字段变量中至少有一个东西吗?

(test (> (length $?foo) 0))

我的多字段变量是空的吗?

(test (= (length $?foo) 0))