[R6RS] Why there are two syntactic layers

Michael Sperber sperber
Thu Jun 23 02:41:54 EDT 2005


"Manuel Serrano" <Manuel.Serrano at sophia.inria.fr> writes:

> As Marc, I don't understand why we should provide two syntactic
> layers. IMHO, we should provide only one which defaults to something
> as simple as:
>
>      (define-<whatever-you-want-here> point x y)
>
> for defining a plain 2 dimensional points! 
>
> The single syntactic layers should be customizable so that it allows
> the fine tuning that we want on records.

Let me backtrack on the reasoning as discussed in Boston:

For the syntactic records, we've been looking at 3 kinds of proposals:

- "implicit": simple facilities that pick the names for the record
  procedures implicitly, such as Will's proposal from Snowbird or
  PLT's DEFINE-STRUCT

- "explicit": simple facilities that let the programmer pick the names
  of the record procedures, sucha s SRFI 9 or SRFI 57

- "fancy": facilities that combine the two, such as Marc's or Kent's
  proposal

Now, the "simple" facilities are fine for the core because they are in
line with the R5RS preamble.  The "fancy" facilities are not because
they are complicated and contain redundancies.

Still, at least you and Marc and Kent want a "fancy" facility, and
Kent and I have been trying to provide it.  It can't go in the core,
but it can go in a library, where redundancy is not such a problem,
and people can replace it by something they like better (possibly by
building on top of it, or the simple facility), if they feel like it.
(And they will feel like it.)  This is why the "fancy" layer in the
draft has "library" status.

If it's has library status, it needs to be built on top of something
in the core, which could be either "implicit" or "explicit."  The
"implicit" facility is a poor choice for this, because you need to
re-create its naming in order to build "fancy" on top of it;
"explicit" does the job much better.

Now (and here we leave the Boston discussion and turn to Kent and I in
Bloomington), given two layers, you can have a choice of designing
them independently, which gives you greater freedom in designing both
layers, or designing them in tandem such that you can easily "upgrade"
your record-type definition from from the simple to the fancy layer.
We decided on "easy upgrade path."  That choice is pragmatic, and Kent
and I stand by it, but obviously debatable.

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


More information about the R6RS mailing list