MzScheme now respects the phase separation between macros and values that should have existed a long time ago. Try this (define-macro egg (let ([foo (lambda x x)]) (lambda (x) foo))) and you will see that foo is reachable from within a macro. -- Matthias