On Tue, Apr 8, 2008 at 12:45 PM, Alaric Snell-Pym <[EMAIL PROTECTED]> wrote: > > riaxpander manages this: > > > > (use riaxpander) > > > > (define-macro (my-assert test error) > > `(if (not ,test) (error ,error))) > > > > > > (define-syntax foo > > (syntax-rules () > > ((_ x) (let ((tmp x)) (my-assert x "failed"))))) > > > > (macroexpand '(let ((x 1)) (foo x))) > > > >
In this case the hygiene is actually circumvented: riaxpander runs before the normal macro-expansion (the expansion of low-level macros happens afterwards which makes this work). Referential transparency requires that bindings that are introduced by a hygienic macro may not be accessible by name alone by other macros (context is required as well). (Now, I believe this is the correct wording, but I may be wrong) cheers, felix _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
