by shigemk2

当面は技術的なことしか書かない

対話によるCommon Lisp入門 31 再帰でlength

[9]> (defun length$ (lst)
(if (null lst) 0
(+ 1 (length$ (rest lst)))))
LENGTH$
[10]> (length$ '(a b c))
3
[11]> (trace length$)
;; Tracing function LENGTH$.
(LENGTH$)
[12]> (length$ '(a b c))
1. Trace: (LENGTH$ '(A B C))
2. Trace: (LENGTH$ '(B C))
3. Trace: (LENGTH$ '(C))
4. Trace: (LENGTH$ 'NIL)
4. Trace: LENGTH$ ==> 0
3. Trace: LENGTH$ ==> 1
2. Trace: LENGTH$ ==> 2
1. Trace: LENGTH$ ==> 3
3