Michael Heerdegen writes: > With our current implementation of local macros, only the expansion > (compile) time matters, so this not so simple to do: > > (let ((l '(0 1 2 3)) > (i '(0 1 2 3)) > (flag nil)) > (cl-macrolet ((yyy () (if flag '(nth 2 l) '(nth 3 i)))) > (cl-symbol-macrolet ((xxx (yyy))) > (setf xxx 0) > (list l i)))) > |- void-variable: flag Most Common Lisps seem to barf in this case (macro definition referencing local variables). I only found it explicitly described here: http://www.lispworks.com/documentation/HyperSpec/Body/s_flet_.htm#macrolet Anyway, I would like to speak out that one should not do that, how about this?