[R6RS] Re: strawman module syntax

Matthew Flatt mflatt
Thu Jul 8 08:11:56 EDT 2004


At Thu, 08 Jul 2004 10:56:57 +0200, Michael Sperber wrote:
>   Matthew, could you expand on
>   the rationale of distinguishing between "Unix-style relative path"
>   and "OS-specific absolute path" in <path-spec>?

Most of the time, you want a simple syntax for referring to relative
paths, and the Unix conventions (as adopted for URLs) work fine.

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


> - 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?

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


>   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.

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

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

:)


> Here is the syntax:
> 
> <config form> -> <interface def> | <module def>
> 
> <interface def> -> (DEFINE-INTERFACE <identifier> <interface exp>)

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

In general, this points to the reason that I advocate only `module' at
the top level. The top level isn't extensible (no macros can expand to
top-level `module'), so I think it's important to have as little there
as possible, and move everything else into the extensible world.


Matthew



More information about the R6RS mailing list