勘違いしてました。

こうだと思います。
(defun func(lst)
(let ((temp 0))
(labels
((foo(x)
(if(null x)temp
(progn
(setq temp(+ temp 1))
(foo (cdr x))))))
(foo lst))))