Maybe something like this, to make sure it is only changed by a parameterize form?
(provide syntax-local-introduce call-with-syntax-introducer) (define current-syntax-introducer (make-parameter #f)) (define (syntax-local-introduce stx) ((current-syntax-introducer) stx)) (define (call-with-syntax-introducer intro thunk) (parameterize ([current-syntax-introducer intro]) (thunk))) On Aug 12, 2014, at 9:47 AM, Gustavo Massaccesi <gust...@oma.org.ar> wrote: > +1 . Last year I was experimenting with require-tranformers and > provide-transformers. They are very weird macros, because they have to > be executed in the "wrong order" (from inside to outside, like > functions). They use a newly created syntax-mark, and to break hygiene > you must use syntax-local-require-introduce or > syntax-local-provide-introduce (under the hood, the marker is stored > in a parameter, but the parameter is not exported, so you can't > change/parameterize it). > > I think that all of them can be merged in a generalized > syntax-local-introduce with a public parameter. The parameter should > be used only in a parameterize form. Overwriting the parameter doesn't > look like a good idea. I think it will break the current macro and > create a syntax error, but it will not be useful to break the > security. > > > Gustavo > > > On Mon, Aug 11, 2014 at 4:22 PM, Alexander D. Knauth > <alexan...@knauth.org> wrote: >> >> On Aug 11, 2014, at 1:44 AM, Matthew Flatt <mfl...@cs.utah.edu> wrote: >> >>> Answers below, but first a big caution: While these details have been >>> the same for a while, I hope and expect the representation of syntax >>> objects to change in the coming months. I have been threatening to >>> rewrite the macro expander (yes, in Racket) for a while, but things are >>> lining up so that I can actually start trying soon. >> >> >> This is off topic, but if your planning on rewriting the macro expander in >> Racket, would it be possible to make it so that syntax-local-introduce uses >> a parameter? >> That way for match expanders (etc.) it could set that parameter to a new >> syntax-introducer so that syntax-local-introduce could be used within >> match-expanders (etc.)? >> >> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users
____________________ Racket Users list: http://lists.racket-lang.org/users