[racket] How to get a shared environment in different modules in compile time
On Wed, Sep 25, 2013 at 6:59 AM, Dmitry Pavlov <dpavlov at ipa.nw.ru> wrote:
>
> However, I do not see how to fix that. Does anybody?
> What is the recommended way to do that sort of thing in Racket?
This turns out to be a subtle issue, but one we've thought a lot
about. The best way to learn about how we do this in Racket is a few
papers that Matthew, Ryan, and I have written over the years:
Languages as Libraries, PLDI 2011:
http://www.ccs.neu.edu/racket/pubs/pldi11-thacff.pdf
This covers a lot of ground, and at a fairly high level, but it will
introduce the idea -- see section 6.2
Advanced Macrology ..., Scheme 2007:
http://www.ccs.neu.edu/racket/pubs/scheme2007-ctf.pdf
This paper focuses more on the issue you're interested in --- see
section 3.2.3 in particular
Composable and Compilable Macros, ICFP 2002:
http://www.cs.utah.edu/plt/publications/macromod.pdf
This paper introduces all the big ideas about the module system, but
is probably harder for someone new to this to learn from.
I'd start with the 'Advanced Macrology' paper, and look at the others,
or post here again, if you get confused.
Sam