Hi! The attached patch allows expansion-time modifications of `current-reader' to be taken into account. For example: (define-macro (install-reader!) (fluid-set! current-reader (let ((first? #t)) (lambda args (if first? (begin (set! first? #f) ''ok) (read (open-input-string "")))))) #f) (install-reader!) this-should-be-ignored => ok This trick works with both the compiler and the interpreter. I intended to use it in Skribilo. Furthermore, the `current-reader' fluid used at compilation-time by default is different from the one in the compiler. This is needed because the REPL uses `current-reader' to install a wrapper around the current language reader; when that language is Scheme, we enter an infinite recursion if Scheme's reader honors `current-reader'. The patch exposes the current compilation environment as a fluid, so that language readers can look for the compile-time `current-reader'. This is admittedly not very elegant, but I can't think of a better way. Thanks, Ludo'.