stated relations between vector, string, list, general sequence procedures

This commit is contained in:
Rolf-Thomas Happe 2003-03-09 19:55:50 +00:00
parent 6863cce44f
commit bcb960f956
1 changed files with 45 additions and 22 deletions

View File

@ -108,9 +108,32 @@ the maker of the actual type of the (first) sequence argument.
Sequence arguments of vector and absequence procedures must be vectors Sequence arguments of vector and absequence procedures must be vectors
resp. absequences, notwithstanding the generic parameter name S used below. resp. absequences, notwithstanding the generic parameter name S used below.
Sequence arguments of general sequence procedures may have different Sequence arguments of general sequence procedures may have different
actual sequence types, e.g. (SEQUENCE-EVERY CHAR=? "abc" '#(#\a)) is actual sequence types, e.g. (SEQUENCES-EVERY CHAR=? "abc" '#(#\a)) is
ok since both String and Vector <= Sequence. ok since both String and Vector <= Sequence.
Equivalences
as far as the specs go, that is: the equivalences don't extend to
unspecified behaviour but I didn't bother to spell this out in detail.
The stated equivalences may have to suffer from exceptions as the
library grows, but please report deviations anyway.
* (sequences-foo x ...) = (sequence-foo x ...) and
(vectors-foo x ...) = (vector-foo x ...)
if the arg.list is admissible for both procedures.
[ SEQUENCES-procedures don't support optional [start:end)
parameters; SEQUENCE-procedures don't support an arbitrary number
of sequence arguments. Same for vectors. ]
* if all sequence arguments to a general sequence procedure are
vectors the result is that of the corresponding vector procedure.
E.g. ``sequence-map = vector-map'' on vectors.
* if all sequence arguments to a general sequence procedure are lists
(strings) and there is a corresponding list (string) procedure in
the respective srfi, the result complies with the srfi spec.
E.g. ``sequences-fold = fold'' on lists,
``sequence-fold = string-fold'' on strings.
* Predicates * Predicates