This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home. For a version of this page that may be more recent, see SixRejection in WG2's repo for R7RS-large.

Six­Rejection

cowan
2012-02-08 14:56:40
1history
source

These are condensed and anonymized reasons given by the people who voted against R6RS, with comments underneath them that shows how R7RS meets (or fails to meet) the objection. This document is still being edited. All errors are Cowan's responsibility.

** R6RS is about 340% the size of R5RS. By contrast, R7RS-small is about 50% larger than R5RS, but only the base library is required, and that is actually smaller than R5RS.

** R7RS permits case-insensitive code files to be included in modules without making any changes to the files themselves.

** R7RS-large is expected to consist of a series of optional packages, some of which will be closely aligned with existing SRFIs.

** Neither implicit nor explicit mantissa widths are provided in R7RS.

** Version numbers are not a feature of R7RS libraries.

** R7RS permits this.

** The R6RS I/O system

** R7RS-small does not provide identifier syntax. At present, R7RS-large does not provide it either, but that may change.

** R7RS-small provides only syntax-rules. R7RS-large currently provides for explicit renaming, but this may change.

** R7RS-small adopts these conventions of R5RS, but also adopts SRFI 46.

** R7RS does not require the whole Unicode repertoire to be supported, but does things the Unicode way.

** R7RS-small provides only normalized comparison procedures rather than normalization procedures.

** R7RS does not prescribe O(1) access time.

** Unfortunately, they are an IEEE Scheme feature and can't easily be removed.

** R7RS-small provides only R5RS I/O plus a close parallel of it for byte I/O. R7RS-large will have a more complex I/O package, but its content is not yet defined.

** They are not in R7RS-small; the R7RS-large situation is still open.

** R7RS-small provides the R6RS exception system, but not the condition system; a condition can be any Scheme object.

** R7RS-small provides only a SRFI-9-compatible syntactic record layer. R7RS-large will probably provide SRFI 99 records or something very like them.

** R7RS-small does not provide phasing, as its only macro system is syntax-rules. The question is still open for R7RS-large.

** R7RS-small does not provide syntax-case. R7RS-large macro systems are still open.

** R7RS-small has changed R5RS in small ways for SRFI-1 compatibility. SRFI-1 is currently planned to be incorporated into R7RS-large. R7RS-large will provide hash tables, but the exact form is still open.