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

Reply via email to