[R6RS] Re: strawman module syntax

Michael Sperber sperber
Thu Jul 8 12:13:16 EDT 2004

>>>>> "Matthew" == Matthew Flatt <mflatt at cs.utah.edu> writes:

Matthew> Meanwhile, a programmer writing completely unportable code (in the
Matthew> sense of "doesn't port to any other filesystem, much less OS") might
Matthew> want to break away from the Unix conventions --- maybe to specify a
Matthew> drive in Windows, or a file whose name contains "/" in old Mac OS.

OK.  Do we have to provide for this possibility in the standard then?

>> - In MzScheme, I really hate the restriction that, in the language
>>   designation, I can only put a <require> and not a <require-spec>.
>>   Matthew---could you expand on why this is so?

Matthew> http://list.cs.brown.edu/pipermail/plt-scheme/2003-December/004375.html

OK, that ties in with your position below, i.e., that you
can't macro-expand into the language designation, right?

>>   To make a long story short: I think that module *interfaces*, not
>>   definitions should have globally unique meanings, and that the
>>   implementation for any given interface should be determined at
>>   compile/link time.  This would mirror the way cc/ld works, and I
>>   think it's the way to go.

Matthew> In case there's any doubt that I still disagree, I stand by
Matthew> my previous claims:

Matthew>    http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf
Matthew>    http://www.ccs.neu.edu/scheme/pubs/pldi98-ff.ps.gz
Matthew>    http://www.ccs.neu.edu/scheme/pubs/thesis-flatt.ps.gz

I think I understand what you're saying in these papers, but I don't
understand where exactly the disagreement is (as far as I can see, I'm
pretty firmly in your camp, but you're saying that impression is
wrong)---there's something I'm missing.  Could you elaborate?

Matthew> Why doesn't an interface have a language or import spec?
Matthew> Shouldn't the syntax for defining an interface be
Matthew> macro-extensible? And then there's the question of defining a
Matthew> macro that generates interface declarations...

Nothing in the proposal precludes that.  (The Scheme 48 module system
is essentially a bunch of macros.)  However, I don't think this is
useful enough to warrant specification in R6RS.  I may be
wrong---examples of where this is important might help.

Matthew> In general, this points to the reason that I advocate only
Matthew> `module' at the top level. The top level isn't extensible (no
Matthew> macros can expand to top-level `module')

I see why this is so in MzScheme, but I don't see why it *has* to be
so.  (Specifically, this is where Scheme 48 is different.)  Wouldn't
it be better to leave this degree of freedom to the implementor?

Cheers =8-} Mike
Friede, V?lkerverst?ndigung und ?berhaupt blabla

More information about the R6RS mailing list