Hi, Matthew Flatt <mfl...@cs.utah.edu> skribis:
> It's natural --- but not correct --- to think that #` is responsible > for hygiene, in which case `(f #'x)' should keep the given `x' separate > from the `let'-bound `x' in the result. [...] > If you change the example to > > #lang racket > (begin-for-syntax > (define-syntax-rule (f body) > #`(let ([x 1]) body))) > (define-syntax (m stx) > (with-syntax ([zz (f x)]) #`(let ([x 2]) zz))) > (m) > > so that `f' is used as a macro instead of a function, then you get 2, > since the macro-expansion of `(f x)' keeps the `x's separate. Interesting. Thanks for the clarification and examples. Ludo’. _________________________ Racket Developers list: http://lists.racket-lang.org/dev