所以我是 LISP 的新手,我正在玩一些基本的求和函数。
(defun suma (&rest L)
(cond
((null L) 0)
(T (+ (CAR L) (EVAL (CONS 'suma (CDR L)))))
))
(defun suma2 (&rest L)
(cond
((null L) 0)
(T (+ (car L) (suma2 (cdr L))))
))
第一个功能工作得很好。第二个函数给出了这个错误:SB-KERNEL::CONTROL-STACK-EXHAUSTED。
我的问题是:为什么第一个功能可以,而第二个功能却不行,因为它们本质上是在做同样的事情?