0

我正在用 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)))))

任何人都可以帮忙吗?

4

1 回答 1

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 ...". 单引号仅用于防止评估。

于 2012-09-29T18:58:34.920 回答