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 2
author
cowan
comment
Cleaned up and clarified
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 and for-each groups should be specified to implicitly truncate all sequence arguments to the length of the shortest sequence.
time
2010-08-18 22:40:49
version
2