Lisp函数:计算表达式中的原子数

时间:2012-09-29 18:55:10

标签: 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)))))

有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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 ..."。单引号仅用于防止评估。