Full name (required): John Cowan Location (optional): New York City
Affiliation (optional): None relevant Contact details (optional): [email protected], 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 [email protected] 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 [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
