| With all due respect to the author, I followed the r7rs standardization closely, and disagree with his bottom lines. 1. On the number argument: Even the author acknoweldges that R6RS is twice as large. Regardless of the fact that the standard library is the other half, the fact is that the standard library is a requirement for R6RS. Because of the controversies about it (the condition system, record system, hash table library), the R7RS standard was purposely split into 2 parts, the R7RS-small and the R7RS-large. The R7RS-large standardization is an ongoing project. 2. On the condition system: The fact is that horse already left the barn. Most major implementations already had their own condition hierarchies. The only way to reconcile their existing conditions would be to have a translation layer which would be inefficent. Conforming to R6RS condition system would mean throwing out most of the code that people who use those implementations depend on. R7RS focused on providing a basic error system with a purely procedural interface, which combined with cond-expand and the library system, can allow people to write portable code. So the idea that the standard committee doesn't believe "Safety is not a desirable language feature" is unwarrented. 3. On Optional is better argument: Sure you can have an R6RS with restrictions, but then it isn't R6RS, it is a R6RS-like scheme. Using feature identifiers is at least a better way to create portable code. If you have a library that requires unicode, you can specify that in the code. 4. On syntax-case, one of the costs of having it is a more complicated library system, with import and export levels. Read it yourself, http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-10.html#node_se... . R7RS-small decided to be more conservative in this area. Overall, I think that the way that R7RS standardization has worked to evolve the standard was the right approach. They focused on the most important needs for scheme ( The library system, a basic record system, basic error handling) while avoiding adding features that were overly controversial. |