[R6RS] Re: Why there are two syntactic layers

dyb at cs.indiana.edu dyb
Tue Jun 28 01:12:29 EDT 2005

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

I think the names attached to the layers in Mike's text may be at
fault here.  The "simple syntactic layer" is really the "explicit-name
syntactic layter" and the "featureful syntactic layer" is really the
"implicit-or-explicit-name syntacic layer".  Referring to the former as
"layer 0" and the latter as "layer 1", the point is that with layer 0,
the programmer must specify the names of the constructor, predicate,
accessors, and setters, while with layer 0, the programmer can specify
the names or allow them to be generated automatically.  This is a huge
difference.  Layer 0 functionality is more basic, which is why Mike
labeled it "simple".  (I assume his decision to put init! into the
featureful layer only played into his choice of layer names, but I
see init! as a minor issue.)

I personally prefer that we have only one layer and that it be layer 1,
i.e., allow explicit or implicit naming, but I can see the merits in
having layer 0 built into the core and layer 1 in a library, and I'm
willing to go that route to achieve concensus.  I will be more or less
reluctant to have two layers once we decide what the R6RS core language
is to be.  For example, if cond makes it into the core language as well
as if, I'll be inclined to include layer 1 direcly in the core language.
But if the core language has only if and no cond (and only lambda and
no let, let*, letrec, etc.) then I'd be very much in favor of having
only layer 0 in the core language.


More information about the R6RS mailing list