Full name (required): John Cowan
Location (optional): New York City
Affiliation (optional): None relevant
Contact details (optional): cowan@ccil.org, jcowan on #scheme
Statement of interest: While I am neither a Scheme implementor nor a
heavy Scheme user, I have followed the development of the Lisp family
of languages since 1972 with great interest, and have implemented
a Lisp or two, mostly for the challenge of it. I have been a very
active participant in WG1, an editor of all the R7RS-small drafts.
I am also the chair of WG2, which is resuming the development of the
R7RS-large language.
Vote (required): Yes
Rationale (optional): The British bridge expert S. J. Simon drew a
distinction between striving for the "best possible result" and the
"best result possible" under the particular circumstances of a play.
Simon criticized players who sought to achieve the former on every
hand as having unrealistic expectations. Instead, he said, they should
strive to always achieve the latter. In economic terms, local maxima
are what we should work towards, not global maxima. R7RS-small is
not a global maximum. It isn't anywhere near the best possible Scheme
language we could have if we rewound the tape to before R2RS (R0RS and
R1RS specify only Scheme's syntactic forms, not its procedures), but
started off knowing what we know today. If we did that, we might get
something like John Shutt's Kernel language, or we might get something
quite different; I don't know and I don't think anyone knows.
However, WG1's marching orders were not to design the best possible
Scheme, or even the best possible small Scheme. Instead, we were to start
with R5RS as-is, and add a module language plus whatever modernizations
seemed to us to make sense, having regard to backward compatibility,
self-consistency, and REPL support in particular. To these goals imposed
by the charter, we added the following facilities:
* Unicode compatibility (short of mandating full support as in R6RS)
* R6RS-compatible exception handling
* SRFI-9 compatible records (that is, syntactically defined records only)
* Parameter objects, which simplify access to dynamic binding
* Bytevector support, a subset of R6RS (with only trivial differences
in naming)
* Binary file, string, and bytevector ports plus modest I/O enhancements
* Datum labels for I/O of shared and circular structure
* Convenience enhancements to syntax-rules macros
* More than 20 specific R6RS-compatible enhancements to lexical syntax,
syntax, procedures, and the numeric tower
Other R6RS facilities, such as more powerful file operations, a more
powerful record system, low-level macros, fixnum and flonum specific
arithmetic, bitwise operations on integers, homogeneous numeric vectors,
and hash tables, are scheduled to be included in R7RS-large. There were
many requests to remove call/cc in favor of more tractable delimited
continuations, but the WG felt that such a backwards incompatible change
was unacceptable, given the limitations of our charter.
It is important to note that although the requirement for R7RS-small
compatibility with R6RS was limited in the charter to being "backwards
compatible [...] with an appropriate subset", we in fact attempted
to stay as close to the R6RS features that we included as possible,
deviating only for the sake of compatibility with R5RS itself or with
the various SRFIs that we either adopted or adapted.
In summary, I firmly believe that the R7RS-small voting draft represents
(except in one point, procedure equivalence, where I hope we will be
able to revert to the IEEE and R5RS standard after completing the vote)
the best standardized small Scheme possible.
--
He made the Legislature meet at one-horse John Cowan
tank-towns out in the alfalfa belt, so that cowan@ccil.org
hardly nobody could get there and most of http://www.ccil.org/~cowan
the leaders would stay home and let him go --H.L. Mencken's
to work and do things as he pleased. Declaration of Independence
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports