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


>   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



> 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

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.


More information about the R6RS mailing list