[R6RS] Re: Why there are two syntactic layers

Michael Sperber sperber
Sat Jun 25 04:08:35 EDT 2005

Anton van Straaten <anton at appsolutions.com> writes:

> The "featureful syntactic layer" doesn't seem to provide many more 
> features than than the simple layer.  It's just three shortcut syntaxes 
> and an initialization option.  Does it really warrant existence as a 
> separate library module, in the standard?

Maybe not, but we (well, somebody) probably wants to add more stuff to
the library module.  (In the case Kent, I'll expect he wants to add *a
lot* more, but I'll let him answer that.)  I also always expected more
to be added in the course of the discussion here and on the SRFI list.

Moreover, the additional features may not be many in count, but they
are pretty heavyweight, at least for some of us.

> It's true that the featureful layer can be explained in terms of the 
> simple layer, but I don't see that this alone warrants such an explicit 
> separation.

But it's not this alone---the separation is warranted by the preamble
of R5RS, which we reaffirmed at the meeting.  If you're going to argue
there should be only one, we should either leave it be with the simple
layer (which would be sufficient for people like me), or that the
fancy layer both doesn't pile features upon features and provides
exceptionally clear semantics.

Given the trouble we have agreeing on syntax for any kind of fancy
layer, it seems pretty reasonable to only give people the means to
construct their own fancy layers---this implies layering by
construction.  The fancy layer we provide is just a bonus.

> Implementation of the fancy layer doesn't seem to be a particular burden 
> on implementors, either.  If the main reason for separating it out is a 
> philosophical objection to the features it offers, I think we should 
> seriously consider combining the two layers.  Those with a philosophical 
> objection to the shortcut syntaxes don't have to use them, even if they 
> aren't in a separate module.

In the case of the specific features in the fancy layer, that doesn't
cut it.  A significant advantage of having two layers is that I can
recognize right away whether a form belongs to the simple or to the
fancy layer.  (I can grep for it.)

The "you don't have to use it" argument is reasonable, but it has
significant consequences that I believe are incompatible with the
principles we're trying to adhere to---the design strategies of Common
Lisp and C++ seem built around that premise, and look where it got us.
>> so those who don't want to learn or use the fancy layers don't
>> have to, and those who do want to can.

> This highlights my point: if learning the fancy layer was much of a 
> barrier, I'd see more point in it being a separate layer.  However, 
> learning this particular fancy layer mainly involves recognizing that 
> you can leave out some bits if you like.

No---among other things, it involves understanding and remembering the
naming conventions used by it.  It's not just about recognizing and
understanding the DEFINE-RECORD-TYPE form itself, it's about
recognizing, understanding and remembering the things defined by it.

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

More information about the R6RS mailing list