[R6RS] Re: strawman module syntax
Sat Jul 10 09:37:59 EDT 2004
To tie in with my response to Mike's messages...
At Fri, 9 Jul 2004 14:28:13 -0500 (EST), "R. Kent Dybvig" wrote:
> For the record, I prefer meta definitions and no require-for-syntax,
> [...] I prefer that module
> inits be evaluated once when the module is first loaded
The PLT Scheme implementors were not able to make MzScheme, DrScheme,
mzc, mzc --exe, and Check Syntax work consistently in this world.
We didn't have Chez's `module', but namespace control was not the
problem. The problem was getting all code loaded at the right time.
Without a phase distinction, code tends to work when it shouldn't
(i.e., a `meta' that should be a `meta meta', or something like that).
Then, the code fails six months later in a different tool with a
different programmer, and no one can figure out why.
This isn't much of an issue for smallish-sized libraries, or when no
one can really share libraries. It's a killer when you try to share
lots of libraries among lots of people.
So, for the record, I prefer that a module be invoked only when it's
used at a particular phase, and it's invoked separately for each phase
(which implies `require-for-syntax').
More information about the R6RS