This is a face-to-face comparison of three container SRFIs, SRFI 1 for lists, SRFI 13 for strings, and SRFI 43 for vectors. It will eventually mature into a proposal to make them match up to some degree, as has been done in R7RS-small, but at the moment it's just data. Procedures present in the small language have mostly been removed unless they have corresponding procedures in other SRFIs that aren't part of the small language, as I assume that they won't be separately part of the large language.
The following sections are omitted here because they aren't likely to have counterparts in other containers:
xcons |
- |
- |
cons* |
- |
- |
list-tabulate |
string-tabulate |
- |
circular-list |
- |
- |
iota |
- |
- |
- |
- |
vector-reverse-copy |
null? |
string-null? |
vector-empty? |
proper-list? |
- |
- |
circular-list? |
- |
- |
dotted-list? |
- |
- |
not-pair? |
- |
- |
null-list? |
- |
- |
list= |
- |
vector= |
first .. tenth |
- |
- |
car+cdr |
- |
- |
take(!) |
string-take |
- |
drop |
string-drop |
- |
take-right(!) |
string-take-right |
- |
drop-right |
string-drop-right |
- |
split-at(!) |
- |
- |
last |
- |
- |
last-pair |
- |
- |
- |
string-pad†|
- |
- |
string-pad-right†|
- |
- |
string-trim†|
- |
- |
string-trim-right†|
- |
- |
string-trim-both†|
- |
- |
string(-ci)-<> |
- |
- |
string-compare(-ci) |
- |
- |
string-hash(-ci) |
- |
- |
string-prefix(-ci)? |
- |
- |
string-suffix(-ci)? |
- |
- |
string-prefix-length(-ci) |
- |
- |
string-suffix-length(-ci) |
- |
length+ |
- |
- |
append! |
- |
- |
concatenate(!) |
string-concatenate |
vector-concatenate |
- |
string-join |
- |
- |
string-concatenate-reverse |
- |
reverse(!) |
string-reverse(!) |
vector-reverse! | |
append-reverse(!) |
- |
- | |
- |
- |
vector-swap! |
- |
- |
reverse-list->string |
- | |
- |
reverse-vector->list |
- | |
- |
reverse-list->vector |
- |
count |
string-count†|
vector-count |
- |
string-contains(-ci) |
- |
fold |
string-fold |
vector-fold |
- |
string-fold-right |
vector-fold-right |
unfold |
string-unfold |
vector-unfold |
- |
string-unfold-right |
vector-unfold-right |
pair-fold |
- |
- |
reduce |
- |
- |
fold-right |
- |
- |
unfold-right |
- |
- |
pair-fold-right |
- |
- |
reduce-right |
- |
- |
append-map(!) |
- |
- |
map(!) |
string-map(!) |
vector-map(!) |
pair-for-each |
- |
- |
filter-map |
- |
- |
map-in-order |
- |
- |
- |
string-for-each-index |
- |
- |
xsubstring |
- |
- |
string-xcopy! |
- |
filter(!) |
string-filter†|
- |
partition(!) |
- |
- |
remove(!) |
string-delete†|
- |
find |
- |
- |
find-tail |
- |
- |
any |
string-any†|
vector-any |
every |
string-every†|
vector-every |
list-index |
string-index†|
vector-index |
- |
string-index-right†|
vector-index-right |
- |
string-skip†|
vector-skip |
- |
string-skip-right†|
vector-skip-right |
take-while(!) |
- |
- |
drop-while |
- |
- |
span(!) |
- |
- |
break(!) |
- |
- |
- |
- |
vector-binary-search |
delete(!) |
string-delete†|
- |
delete-duplicates(!) |
- |
- |
substring/shared, string-concatenate/shared, string-append/shared, string-concatenate-reverse/shared, string-replace, string-tokenize
†Polymorphic procedure: accepts character, character set, or predicate