[plt-scheme] 3D boxes and macros
Consider this code:
(module box-and-macro mzscheme
(define-for-syntax the-box (box 'initial))
(define-syntax (my-macro stx)
(syntax-case stx ()
[(_)
#`(begin
(set-box! #,the-box 'value)
(if (eq? (unbox #,the-box) 'value)
'okay
'fail))])))
I have a box defined in the transformer environment, that I insert into
the syntax. I'd expect that the set-box! would first mutate the contents
to 'outer-value, followed by the call to unbox. However, what I get is:
Welcome to DrScheme, version 299.106-svn16jun2005.
Language: (module ...).
> (my-macro)
fail
Could someone tell me what's going on? Moreover, how I could get what I
want? That is, I want an accumulator for macros. I thought I could hack
it by creating a box in the transformer environment and accessing/mutating
it as appropriate.
-Arjun