[R6RS] R6RS = Common Scheme?

Marc Feeley feeley
Tue Jan 20 22:25:26 EST 2004

> > I should also point out that I strongly believe in a separation of a
> > "core" Scheme language from libraries.  I would like to see the core
> > be very small, and to place the operations on numbers, lists, vectors,
> > strings, ports in librairies.
> We'll have to flush the dot interface if we move lists outside of
> the core.

That is true.  However, we could have the core define a basic lambda
with only non-rest-parameters.  Then the list library could extend the
syntax of lambda to allow rest-parameters.  Alternatively the core
could define the rest-parameter syntax, explain that a list of the
parameters is created, and let the list library define the primitives
that access lists.  "apply" also causes this problem if it is in the

> I sympathize with this point of view, since it sounds like it will yield
> a nice, modular language of which we can all be proud.  Some practical
> problems, however, may crop up, like the dot interface problem.
> Another might involve user-defined records.  Assuming we agree on some
> form of user-defined records, it might make sense to describe all built-in
> aggregate types as if they were created by the record definition facility.
> This could suck the record definition facility into the core and along
> with it anything involved defining records, including possibly symbols,
> lists, and numbers.

I agree that records and other "core" features may drag some other
things into the core.  Moreover, I think that records should be in the
core.  On the other hand, I'm not sure it is useful to define other
built-in types with it (you mean pairs probably, but also vectors,
strings, ports, symbols, etc?).

> If we do separate the language into a core and set of libraries, I would
> want us to establish a reasonable set of standard libraries that are
> visible by default, i.e., unless specifically omitted by the programmer.
> Programmers should be able to write programs in a reasonable, standard
> subset of the language without having to include any declarations at
> the top of their program files.

I agree with this also.  "R6RS" should mean the core and the "standard"
libraries.  However, there should be a way to say "this module uses
the R6RS core and the R6RS list library".  I'm not sure a negative
form like "uses R6RS except for the string library" can be specified
clearly (it would require the concept of modules containing other modules
rather than the simpler: module = environment).


More information about the R6RS mailing list