2012-09-29 60 views
0

我在lisp中編寫函數,但沒有得到結果。 該函數計算表達式中的原子數。Lisp函數:計算表達式中的原子數

(defun count-atoms(exp) 
'Return the total number of non-nil atoms in the expression' 
(cond((null exp) 0) 
    ((atom exp) 1) 
    (t (+ (count-atoms (first exp)) 
      (count-atoms (rest exp)))))) 

當我在clisp中運行時,我所得到的是以下結果。

[3]> (count-atoms '(a b c)) 
(COND ((NULL EXP) 0) ((ATOM EXP) 1) 
(T (+ (COUNT-ATOMS (FIRST EXP)) (COUNT-ATOMS (REST EXP))))) 

任何人都可以幫忙嗎?

回答

2

我很驚訝,你會得到一個結果。我得到一個錯誤:

*** - PROGN: variable THE has no value 
The following restarts are available: 
USE-VALUE  :R1  Input a value to be used instead of THE. 
STORE-VALUE :R2  Input a new value for THE. 
ABORT   :R3  Abort main loop 

的原因是,在Common Lisp中的字符串必須在雙引號:"Return ..."。單引號僅用於防止評估。

+0

明白了。謝謝! – user1561949