From: Jim Meehan
Subject: Re: let, lambda & common-lisp
Date: 
Message-ID: <1991Sep23.122708.8856@src.dec.com>
    How do i declare a local function that is recursive?
    Note:  in my version of common-lisp, 'label' is undefined.
    I want to do something like this:
        (defun foo (x y)
          (let ((bar (lambda (x) (if (= x 0) 0 (* x (bar (- x 1)))))))
            (funcall bar x)))

1. If your Common Lisp doesn't have LABELS (or FLET, apparently),
it shouldn't be called Common Lisp at all.  But anyway ...

2. You can use always pass the function to itself:

(defun factorial (x)
  (let ((bar #'(lambda (f x) (if (= x 0) 1 (* x (funcall f f (- x 1)))))))
    (funcall bar bar x)))