title: let and flet in emacs lisp
body: <p>I don't know if you would call it the canonical formulation, but to bind a local function I am advised by the GNU manual to use 'flet':</p>
  
  <pre><code>(defun adder-with-flet (x)
    (flet ( (f (x) (+ x 3)) )
      (f x))
  )
  </code></pre>
  
  <p>However, by accident I tried (after having played in Scheme for a bit) the following expression, where I bind a lambda expression to a variable using 'let', and it also works if I pass the function to mapcar*:</p>
  
  <pre><code>(defun adder-with-let (x)
    (let ( (f (lambda (x) (+ x 3))) )
      (car (mapcar* f (list x)) ))
  )
  </code></pre>
  
  <p>And both functions work:</p>
  
  <pre><code>(adder-with-flet 3)   ==&gt; 6
  (adder-with-let 3) ==&gt; 6
  </code></pre>
  
  <p>Why does the second one work? I cannot find any documentation where 'let' can be used to bind functions to symbols.</p>