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 | list-copy (SRFI 1) | string-copy | vector-copy (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.
