[R6RS] Re: strawman module syntax
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?
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:
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