(defmacro define-some-things ()
(let ((f1 (gensym "fun1"))
(f2 (gensym "fun2")))
`(progn
(defun start (n)
(,f1 n))
(defun ,f1 (n)
(if (zerop n)
(list ',f1 n)
(cons ',f1 (,f2 (1- n)))))
(defun ,f2 (n)
(if (zerop n)
(list ',f2 n)
(cons ',f2 (,f1 (1- n))))))))
(define-some-things)
; CL-USER> (start 4)
; (#:|fun137185| #:|fun237186| #:|fun137185| #:|fun237186| #:|fun137185| 0)