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|
|Copy constructor||list-copy (SRFI 1)||string-copy||vector-copy (SRFI 43)|
|Mutating copier||list-copy! (SRFI 1)||string-copy! (SRFI 13)||vector-copy! (SRFI 43)|
|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)|
|Append||append||string-append||vector-append (SRFI 43)|
|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: 45 procedures, 27 in R5RS, 2 in R6RS, 2 in SRFI 1, 2 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.