Emacs Lisp よくわからんがこんなの
(defun length (x)
(cond ((eq x ()) 0)
(t (+ 1 (length (cdr x))))))