私は 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))))
))
最初の関数は問題なく動作します。2 番目の関数では、SB-KERNEL::CONTROL-STACK-EXHAUSTED というエラーが発生します。
私の質問は、なぜ最初の関数は問題なく、2 番目の関数は本質的に同じことをしているのにそうでないのですか?