On Thu, Jan 10, 2019 at 8:04 PM Per Bothner <xxxxxx@bothner.com> wrote:

A "generalized vector" can be either a uniform vector or a generic vector.

And from what I gather a mutable or an immutable vector.  Well, as may be.
 
It think Scheme should have immutable vectors.  SRFI 122 has immutable arrays.

So it does.  However, the Liskov Substitution Principle means that mutable
and immutable collections are not in a subtype-supertype relationship in
either direction, and the vectors anciently known to Scheme are the mutable kind.
You can of course create abstract vectors that subsume both, but you can't do
much with them.
 
Regardless, I think it is very useful to allow ranges in many places where one
would allow read-only vectors.  One example is pair array-index-ref (and the
similar array-index-share) in SRFI 164.

One of the disadvantages of designing Scheme piecemeal is that such ideas are
hard to deal with.  What if SRFI 164 gets into the standard but ranges do not?
And forward references in SRFIs, though they occasionally happen, are awkward.

Of course nothing prevents you from either extending your implementaiton to accept
ranges as a kind of immutable vector, or creating a third SRFI that provides
generic functions for them.
 
Separate libraries only slightly improves the situation.  Just consider the verbosity
of the procedure index in a reference manual.  Also consider that 50 procedures
just to deal *specifically* with signed 32-bit integer vectors is by itself excessive.

Very much a matter of opinion, and it's why we vote on things.  In general, I prefer
to provide comparable libraries for all sufficiently similar types, so that programmers
won't be pushed to using lists instead of vectors, for example, because there is so
much better support for lists than for vectors.  In addition, they form a good basis
for the eventual generic functions.