レキシカル・スコープ

(setf make-func
(let (a b)
  (labels ((make-func () (defun g (x) (setf b x) (format t "g a:~a b:~a~%" a b))
)) (setf b #'make-func))
  (defun f (x) (setf a x) (format t "f a:~a b:~a~%" a b))
  b))

レキシカル・スコープ恐るべし。Java が出てきたとき、スタックがないのに(あってもいいけど)驚いた。でもよくよく考えたら、スタックなんてものは Z80 の時代の話なので、もっとフレキシブルにコンテキストを保存できてもいいかもしれない。