[R6RS] Re: strawman module syntax

Michael Sperber sperber
Sat Jul 10 09:59:59 EDT 2004

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

>> There's just too much variety in the way Scheme systems work---an
>> interactive environment, to-C compilers, incremental compilers, what
>> have you.

Matthew> In my view, this is precisely *the* problem for R6RS. Nothing else
Matthew> matters in comparison.

I'd be all the happier if it can be done, I'm just skeptical.

Matthew> Indeed, the success of `module' within PLT Scheme --- to make all of
Matthew> our tools work consistently --- is the only reason that I [used to]
Matthew> think I have anything to offer R6RS.

Matthew> But you already know all that. Can you be more specific about what
Matthew> could go wrong --- maybe a specific scenario?

Sure.  But note that I don't see this as really as "going wrong" per

Consider the problem of just running an application within MzScheme.
I can do the following:

- env PLTCOLLECTS=...: mzscheme -mqvL <file> <collection>
- env PLTCOLLECTS=...: drscheme &
  ... then either load the source file into the editor, or type
  (require (lib "<file>" "<collection>")) into the editor window, type

So there's already two.

Another kind of system might require me to prefix this with an
explicit batch-compilation step.

Also, depending on how far we go with the specification, there's the
issue of laying out the code conretely in a file system/.jar-like
file/database whatever.

I have the feeling there's been a misunderstanding, not a difference
in opinion.  Does this make things clearer?

Matthew> I count macros as "first-order data". The expansion half goes in the
Matthew> signature, and the run-time half (free variables in the template) go in
Matthew> the implementation. (This is like Alan's "First-Class Macros have
Matthew> Type", though I think he muddied terminology with the phrase
Matthew> "first-class macros".)

OK, just checking ...

>> Also, there are other aspects about the proposal I posted---could you
>> comment on those?

Matthew> I've commented on the places where I strongly disagree, I think, so
Matthew> other things seem fine.


Another issue with your original proposal.  You repeatedly mentioned
how important it is to be able to macro-expand into REQUIRE and
PROVIDE forms.  But didn't you take away that ability by surrounding
the code with BEGIN/INCLUDE/whatever?  (That is how Scheme 48 works,
so we may have read different semantics into the syntax.)

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

More information about the R6RS mailing list