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

Re: [Scheme-reports] ratification vote for R7RS-small

Full name: Peter Bex

Location: The Netherlands

Statement of interest: Ever since I discovered Scheme some 10 years
ago I've been using it.  I've written about it, promoted it, used it
professionally and used it for teaching OOP concepts to university
students.  All the free software I write is in Scheme.

I'm currently a member of the CHICKEN Team, which collectively
maintains the CHICKEN Scheme compiler and associated project.  I'm the
author and maintainer of several extension libraries for CHICKEN.  I'm
a contributor to Alex Shinn's portable "Irregex" library and
responsible for maintaining its integration in CHICKEN.

Finally, I've participated in several R7RS discussions on the
scheme-reports mailing list.  A few of my suggestions have made their
way into the report.  I didn't participate in the R6RS discussions or
voting because at the time I didn't feel my knowledge and use of
Scheme was at a level I could say anything about it.  The ratification
of R6RS made me sad to see my favorite elegant little language go down
the drain.

Vote: yes

Rationale: I believe R5RS is the best Scheme standard so far,
including this draft.  There are few extensions to R5RS which are
widely supported, and some that are remain highly controversial,
including most of R6RS.

This has put the R7RS committee in the unfortunate position of having
to "invent" some new, *non-controversial* extensions to the language
in order to force the language to become more conducive to sharing
code.  This is an impossible task and in my opinion, the committee
performed an admirable job at it: It managed to pick just those few
things from R6RS which seem to be really neccessary for code sharing,
and distilled it down into a more minimal specification worthy of
bearing the name "Scheme".

There are some problems with the draft: Adding Unicode is perhaps too
big of a change (but at least it's optional), and the way exceptions
integrate with the rest of the language still leaves a lot to be
desired, but this spec is at least more compact than R6RS exceptions.
The "full word" syntax of booleans is totally gratuitous, the
"#|...|#" comment syntax unsightly and I think
"get-output-{string,bytevector}" are unneccessary as well as
"write{,-simple,-shared}", which are confusing to boot.  I somehow
overlooked the addition of "read-line", which I think might be a bad
idea considering it does not support a limit of how much to read
(allowing user input to cause an out of memory situation, leading to
denial of service).  Luckily, a limit as optional second argument is a
pretty straightforward extension which my favorite Scheme already
supports.  I'm ambivalent about bytevectors, binary ports and
libraries, but at least the way they are embedded in the language
seems less of a sprawling mess than in R6RS.

Despite these problems, there are also many good things: the
simplification of numerical syntax and the addition of "quoted" syntax
for symbols are very welcome improvements.  These address
long-standing warts in the syntactic layer of Scheme.  I'm also happy
to see SRFI string ports standardized.  It's nice that
case-sensitivity was "backported" from R6RS, but "#!fold-{no-}case" is
a bit ugly.  The "#;" comment syntax is fantastic and I'm glad it's
added.  I'm excited about the inclusion of parameters and a *simple*
record type system, as it harmonizes the language by exposing concepts
that were previously not accessible to users.  This increases the
language's expressiveness and power, and embraces what Scheme is all
about.  Considering the controversial status of syntax-case, it was a
wise decision to stay away from the mess that is syntactic extension,
simply keeping R5RS' syntax-rules and adding a few well-supported

In closing, I think this draft has some good and some bad parts but
overall, the good parts far outweigh the bad parts.  The language is
still small and elegant and fits in my head (but barely): this is most
important to me.  Even though most of the newly invented extensions
are not particularly elegant, some of them are neccessary for making
code sharing much easier and will thereby hopefully bring together a
fragmented community some more.  This means it satisfies the goals put
forth by the charter and hopefully paves the way for an even better

Scheme-reports mailing list