[R6RS] Re: strawman module syntax

Matthew Flatt mflatt
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').

Matthew



More information about the R6RS mailing list