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.

Source for wiki CompleteSequenceCowan version 5

author

cowan

comment

Removed table row and column

ipnr

198.185.18.207

name

CompleteSequenceCowan

readonly

0

text

The WG1 charter says "Self consistency is an important objective, which may require adding new features."  Scheme has three sequence types: lists, strings, and vectors, but the support for them is not consistent.  Lists have the most support, strings and vectors have much less, and inconsistently so.  I propose providing the following procedures, some of which are R5RS, some R6RS, some in various SRFIs, and some new:

||Type of procedure||Lists||Strings||Vectors||
||Basic constructor||`make-list` (SRFI 1)||`make-string`||`make-vector`||
||Variadic constructor||`list`||`string`||`vector`||
||Copy constructor||`copy-list` (SRFI 1)||`copy-string`||`copy-vector` (SRFI 43)||
||Basic predicate||`list?`||`string?`||`vector?`||
||Sequence length||`length`||`string-length`||`vector-length`||
||Element access?||`list-ref`||`string-ref`||`vector-ref`||
||Element mutator||`list-set!` (proposed)||`string-set!`||`vector-set!`||
||Map function||`map`||`string-map` (SRFI 13 extended)||`vector-map` (R6RS)||
||Map side effects||`for-each`||`string-for-each` (proposed)||`vector-for-each` (R6RS)||
||Convert to list||---||`string->list`||`vector->list`||
||Convert to string||`list->string`||---||`vector->string` (proposed)||
||Convert to vector||`list->vector`||`string->vector` (proposed)||---||


In summary: 33 procedures, 23 in R5RS, 2 in R6RS, 2 in SRFI 1, 1 in SRFI 43, 1 in SRFI-13 but extended to take multiple strings, 4 novel but obvious.

I further propose that the "map function" and "map side effects" groups should be specified to implicitly truncate all sequence arguments to the length of the shortest sequence.

time

2010-09-20 00:07:49

version

5