[R6RS] Splitting into core and libraries

Matthew Flatt mflatt
Tue Jul 19 14:14:14 EDT 2005

At Tue, 19 Jul 2005 09:49:21 +0200, Michael Sperber wrote:
> We haven't established any organizational principles for the split
> among the core and the libraries, so it's hard to say whether this
> would be an appropriate way to split things.
> Several possible views of "core":
> - the minimal part of the language that suffices to define the rest
>   ("semantics core")
> - the stuff corresponding to what's currently in R5RS
>   ("some core")
> - the bindings which are useful for a lot code
>   ("useful core")
> - a core defined by partitioning useful functionality among the
>   semantic core and the libraries
>   ("systematic core")
> - everything we do for R6RS
>   ("big core")
> - ... and so on
> In fact, we may offer several of the above.  (I personally think we
> should.)

I'm not sure I would use the word "core", but I advocate the option
labelled "big core" --- I think. Or maybe it's the one labelled "useful

More concretely, I suggest pretending for now that the standard will
define a single module called "r6rs", and that all implementations must
provide it. This module contains everything that we think is necessary
for portable, useful Scheme code.

Some will complain that this language is too big, and they will be
right. Time permitting, then, we should go back an partition "r6rs"
into smaller modules, and define variants of the smaller modules. For
example, "r6rs" might include `char-upcase' that must work on all of
Unicode, but a different module would offer `latin-1-char-upcase',
whose domain and range is the Latin-1 subset of Unicode.

This strategy runs the risk that we'll waste time on questions about
"r6rs" that would go away if we went straight toward defining a
collection of modules. I'm more comfortable with this risk, though,
than the risk of setting up too large a task by defining many modules
up front.


More information about the R6RS mailing list