(defun Y (f) (funcall (lambda (g) (funcall g g)) (lambda (h) (funcall f (lambda args (apply (funcall h h) args)))))) (defun fibo-impl (self) (lambda (n) (if (<= n 2) 1 (+ (funcall self (- n 1)) (funcall self (- n 2)))))) (defvar fibo (Y #'fibo-impl)) (assert (= 55 (funcall fibo 10)))