我有两个筹码,一个目标和一个我正在改变的筹码。当我完成目标堆栈的每一步时,我从中删除一个字段。我知道当堆栈现在为空时我已经完成了一个特定的目标。我正在尝试编写一个规则来测试变量何时为空,但我一直收到错误:[EXPRNPSR1]函数名必须是符号。这是我的规则。
(defrule done
(declare (salience 30))
?stack <- (curr-stack $?thusfar)
?goal <- (goal-stack ?H)
(test (= ?H ()))
=>
(retract ?stack ?goal))
任何帮助表示赞赏!谢谢!
答案 0 :(得分:0)
$?foo
是一个多字段变量(其中包含0个或更多内容)。
?foo
是单个字段变量(仅限1件)。
因此,测试?foo
的“空虚”对你的筹码表示不会对你有好处。
我的多字段变量中至少有一个东西吗?
(test (> (length $?foo) 0))
我的多字段变量是空的吗?
(test (= (length $?foo) 0))