[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Scheme-reports] R7RS WG1 ratification vote: Andy Wingo

Full name: Andy Wingo

Location: Geneva, Switzerland

Affiliation: Igalia, S.L.

Contact details: wingo@x; wingo@x

Statement of interest: I co-maintain Guile, an implementation of R5RS
and R6RS Scheme.  In addition to a small amount of commercial work, I do
all of my free software hacking in Scheme.

[Not part of the SoI: that's all my words.  I did not vote in the R6RS
election because I got to about 1/3 of the needed SoI words and I
thought that squeezing more out would be redundant.  Please use a bit of
judgment when looking at this and other ballots.  Thanks :)]

Vote: yes

Rationale: The R7RS WG1 draft is a significantly more useful R5RS.

The new draft is slightly less elegant than R5RS, but the tradeoff is
worth it to me if there is a module system that lets me easily share
code with non-R6RS implementations like Chicken.

Viewed from that perspective, there's not much more to say: the draft is
mostly coherent, there are no big problems, and it includes many
positive things.  Most importantly, the draft defines a minimal but
useful module facility.  Support for binary I/O, parameters, records,
and unicode are also welcome additions.

The question that the Scheme community should ask itself, though, is
"does the world need a better R5RS?"  After all, R5RS was released 15
years ago, and in many ways that focus has limited the results of WG1.
The intervening years have taught us much about the interactions of
modules with macros, about delimited continuations, about concurrency,
and about how concurrency affects our choice of basic data structures.
In this regard there are still many steps to make for Scheme to make.

It is also somewhat frustrating that the R7RS WG1 draft defines a less
expressive language than that defined by the R6RS base document.

There are also a number of minor points about the WG1 draft that I feel
were not dealt with in a satisfactory way.  A few things come to mind:
the stack winding dance of `guard' clauses; the continuing presence of
mutable strings; the inability of WG1 to deal with the suggestion of
removing call/cc in favor of delimited continuations; the insistence on
"an unspecified value" rather than allowing 0 values.

However, none of these negative points outweigh the advantages that a
common, minimal module system will have for code sharing with and among
those implementations that rejected R6RS.  And to repeat myself:
although the draft has shortcomings in both small and larger points, it
is at least coherent.  So let's vote it in and move on to the next


Scheme-reports mailing list