On 2009-09-06, at 13:37, Andre van Tonder wrote: > Standardization is not the point to introduce new > or largely unknown or untested concepts, or APIs on > which no consensus is likely to be attained.
I cannot emphasize the importance of this point enough. I really encourage the Committee to do *NO* programming language research as part of this project. (Of course, what the Committee members do in their spare time is none of my business :) R7RS should comprise only features that a) are considered by the majority of the community to have value for teaching or software development, or whatever other purpose Scheme is intended to be used for b) have already been implemented in at least one Scheme system, so that people can have used them enough to have opinions about their value, and implementers understand them well enough to support them in as reliable and efficient a manner as users need Many computing standards prove the importance of following this strategy. a) ALGOL 68 was full of features that were poorly thought out and in some cases essentially unimplementable. From treating a file as a 3- dimensional array of characters, to distinguishing between the italic and the upright period [sic!], the language was guaranteed to give implementers heartburn. Yet, in fact, two quite good subset implementations were built, RRE ALGOL 68 and ALGOL68C. Had the editors of the report felt the need to produce a reference implementation, they would likely have got rid of the vast majority of the poor designs. However, the impossibility of implementing the full language (along with the bizarre two-level grammar) caused most people to tune ALGOL 68 out, and basically killed the language. b) The ANSI/ISO C standard followed the strategy quite well. Very few untried features were ever proposed, and it is entirely practical to implement a C compiler from the Standard. c) By contrast, the C++ standard process has been riddled with unimplementable features. The Standard Template Library derailed the whole process for several years, as implementers tried to build compilers that could handle perverse uses of templates. The most recent revision apparently has many more features that haven't yet been implemented. I don't know this, unfortunately I'm now pretty much incapable of reading a C++ standard without losing my lunch. (The C++ committee apparently have included some kind of closure, and for this they should be commended, I suppose.) I suggest that the R7RS Committee adopt a process whereby a proposal for a feature not found in RnRS, n<7, requires a demonstration of a Scheme system that implements the feature before the proposal is considered. The system involved can be a metacircular interpreter, so the barrier to entry is relatively low. It can also be code written for a particular system, or written in portable Scheme. But let's anchor the whole process in the here-and-now of building good languages that enhance our communication between each other and between us and our computers. -- v _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
