2012-06-22 62 views
0

我有兩個堆棧,一個目標和一個堆棧,我正在改變。當我完成目標堆棧的每一步時,我會從中刪除一個字段。我知道我已經完成了一個特定的目標,那個堆棧現在是空的。我試圖編寫一個規則來測試什麼時候變量是空的,但我總是收到一個錯誤:[EXPRNPSR1]函數名稱必須是符號。這是我的規則。測試空變量

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

任何幫助表示讚賞!謝謝!

+0

在Blocks World有些麻煩嗎? – genio

回答

0

$?foo是一個多字段變量(其中有0個或更多的東西)。 ?foo是一個單一字段變量(僅限1件事)。

因此,測試?foo對於「空虛」不會有太大的好處,只要你已經指出你的堆棧。

我的多字段變量是否至少有一件事?

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

我的多字段變量是空的東西嗎?

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