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 RedEdition in WG2's repo for R7RS-large.

Red­Edition

cowan
2017-08-28 00:33:37
8history
source

This is a frozen version of the Red Edition ballot, with hyperlinks. It serves as a definition of the Red Edition, since a single document is not yet ready.

By unanimous consent, the libraries of R7RS-small are all required in implementations of the Red Edition. The following additional libraries are required:

Basic libraries

  1. What list library should R7RS-large provide?
  1. What vector library should R7RS-large provide?

SRFI 133 is a minor variant of SRFI 43 to make it compatible with R7RS-small by renaming a few procedures. It also includes a few additional procedures not present in SRFI 43.

  1. What string library should R7RS-large provide?

SRFI 13 is an index-based string library. SRFI 130 provides support for string cursors as well, but does not provide string mutation procedures. SRFI 135 is an immutable text library, but accepts strings as well; if you vote for it, you may want to vote "None" here.

No final result: this will be reballoted.

  1. What sorting library should R7RS-large provide?

SRFI 132 is an edited version of the withdrawn SRFI 32, with the algorithm-specific procedures removed and a few additional procedures; it provides sortedness testing, stable and unstable sorting, merging, duplicate removal, median, and selection. R6RS provides only stable sorting and merging.

Sets and maps

  1. What general set and bag library should R7RS-large provide?

SRFI 113 provides linear-update sets and bags, which can be mutable or immutable according to the implementer's preference. Since the interface of SRFI 113 depends on SRFI 114, which has been replaced by SRFI 128, voting for SRFI 113 will cause your vote on comparator libraries to be automatically changed to SRFI 128.

  1. What character set library should R7RS-large provide?

SRFI 14 provides linear-update sets and bags, which can be mutable or immutable according to the implementer's preference. The contents are limited to characters.

  1. What hash table library should R7RS-large provide?

SRFI 69 is a basic hash table library. SRFI 125 is an upward compatible extension of it. Likewise, R6RS provides a basic hash table library, of which SRFI 126 is an upward compatible extension. Since the interface of SRFI 125 depends on SRFI 128, voting for SRFI 125 will cause your vote on comparator libraries to be automatically changed to SRFI 128.

Immutability

  1. What immutable pair/list library should R7RS-large provide?

SRFI 116 is a variant of SRFI 1 for immutable pairs, which are a separate data type from ordinary Scheme pairs. Only a few functional update procedures are provided. Procedure names are prefixed with "i".

  1. What random access pair/list library should R7RS-large provide?

SRFI 101 is a library for purely functional pairs and lists with O(log n) access time. To avoid conflicts, procedure names will be modified for R7RS-large purposes as follows:

  1. What immutable deque library should R7RS-large provide?

SRFI 134 is a library for immutable double-ended queues, with O(1) addition and removal time at both ends.

  1. What immutable text library should R7RS-large provide?

SRFI 135 is a library for immutable character sequences with O(1) access time. Its procedures accept strings as well as texts, so that a separate string library may not be as useful.

Laziness

  1. What generator library should R7RS-large provide?

SRFI 121 is a collection of routines for manipulating generators, which are nullary procedures that are invoked repeatedly to generate a sequence of values. They provide lightweight laziness.

  1. What lazy sequence library should R7RS-large provide?

SRFI 127 is a variant of SRFI 1 for lazy sequences, which are either proper lists or lists with a generator in the tail. They provide medium-weight laziness.

  1. What stream library should R7RS-large provide?

SRFI 41 provides classical streams based on delay/force. They provide heavyweight laziness. It specifies two libraries, but will be treated as just one for R7RS purposes.

Miscellaneous

  1. What box library should R7RS-large provide? *

SRFI 111 is a trivial library for boxes (single-slot records).

  1. What list queue library should R7RS-large provide?

SRFI 117 provides mutable half-deques with O(1) addition at both ends and O(1) deletion from the front. They are based directly on ordinary Scheme lists, and are known in other Lisps as "tconc structures".

  1. What ephemeron library should R7RS-large provide?

SRFI 124 provides ephemerons compatible with MIT Scheme except that they are immutable. A dummy implementation for systems without GC support is also provided.

  1. What titlecase library should R7RS-large provide?

SRFI 129 is a modified version of R6RS titlecase support with full Unicode compatibility. It is less useful with SRFI 135, which provides titlecase support already.

  1. What comparator library should R7RS-large provide?

SRFI 128 is a comparator library whose interface is used by SRFI 113 and SRFI 125. It was not formally balloted but was voted in based on the votes for those libraries, as (scheme comparator).