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 4

author

cowan

comment


    

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||Tables||
||Basic constructor||`make-list` (SRFI 1)||`make-string`||`make-vector`||`make-table`||
||Variadic constructor||`list`||`string`||`vector`||`table`||
||Copy constructor||`copy-list` (SRFI 1)||`copy-string`||`copy-vector` (SRFI 43)||`copy-table`||
||Basic predicate||`list?`||`string?`||`vector?`||`table?`||
||Sequence length||`length`||`string-length`||`vector-length`||`table-length`||
||Element access?||`list-ref`||`string-ref`||`vector-ref`||`table-ref`||
||Element mutator||`list-set!` (proposed)||`string-set!`||`vector-set!`||`table-set!`||
||Map function||`map`||`string-map` (SRFI 13 extended)||`vector-map` (R6RS)||`table-map`||
||Map side effects||`for-each`||`string-for-each` (proposed)||`vector-for-each` (R6RS)||`table-for-each`||
||Convert to list||---||`string->list`||`vector->list`||`table->alist`||
||Convert to string||`list->string`||---||`vector->string` (proposed)||---||
||Convert to vector||`list->vector`||`string->vector` (proposed)||---||---||
||Convert to table||`alist->table`||---||---||---||

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.

Update: I have added an additional row and column to this table that reflects the TablesCowan proposal.

time

2010-08-27 23:51:11

version

4