这是一个论坛发帖人给出的一个例子,我不知道这个尾巴是否优化了。另外,有人可以外行描述尾部优化版本如何胜过普通版本。
(defun mylength (s)
(labels ((mylength-inner (s x)
(if (car s) (mylength-inner (cdr s) (+ x 1)) x)))
(mylength-inner s 0)))
非尾部优化版本?
(defun l (s) (if (car s) (+ 1 (l (rest s))) 0))