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.

Ticket 495: The draft lacks many important libraries

2013-07-07 03:20:44
WG1 - Core
2013-05-12 23:31:50

John David Stone writes:

R6RS provides libraries for hash tables and bitwise operators — very good! Its (rnrs lists) library standardizes the names and interfaces of some very important higher-order procedures — for-all, exists, filter, fold-left, fold-right — while the proposed R7RS doesn't support any of these. Of course, we teachers can always write our own libraries to support them, as apparently we're going to have to continue to do for random-number generation. My guess is that the implementers will do at least as good a job.

This objection ignores the existence of useful and relevant SRFIs that support these things: specifically SRFI 1 for lists, SRFI 33 and SRFI 60 for bitwise operations on integers (see BitwiseComparison for a comparison of both with R6RS), and SRFI 69 for hash tables. All of these come with highly portable implementations, though SRFI 69 is better implemented as a facade on top of native or R6RS hash tables. I will match Olin Shivers's highly bummed code for SRFIs 1 and 33 against any implementer ever born, although Alex Shinn's implementation of SRFI 1 is also worthy, given the overriding goal of his Scheme, which is compactness.

Unfortunately, what R6RS chose to standardize was filled with intentional and, to my mind, gratuitous deviations from these SRFIs, of which SRFI 1 at least is a de facto standard for Scheme programming. The large language will include at least SRFI 1 directly as a standard library, making it a de jure standard as well.


The WG decided by unanimous consent to take no action on this ticket.