Re: various comments Per Bothner 20 Nov 2001 18:34 UTC

Jussi Piitulainen wrote:

>By all means let us allow implementations to make vectors a subtype of
>arrays. I have doubts about requiring them to do so - would they? You
>might, I see, but somebody else might refuse the whole package on that
>account
>
I tend to agree.

>But it seems like the details should be worked out, just to be sure.
>My feeling is that arrays can live happily either joint or disjoint
>with vectors, but if joint, then it must be clean both ways, so that
>all zero-based one-dimensional arrays are vectors, and vectors must be
>sharable just like any array.
>
Common Lisp has the concept of "simple vectors" and "simple arrays".
In this context a "simple" array is one that is not shared.  CL leaves
it up to the implementation exactly what arrays are "simple" but any
array that
is neither adjustable, displaced (shared) or has a fill-pointer is
guaranteed to
be simple. The intention is that the implementation can optionally use a
more efficient representation for simple arrays.

What I'm suggesting is that R5RS vectors are "simple", one-dimensional,
zero-based arrays.  If you follow CL, then yes vectors would be sharable,
but a shared vector would no longer be a simple vector.  You could have
some functions that require "simple" vectors.

On the other hand, any implementation that treats vectors as a sub-type
of arrays, should be encouraged to extend the R5RS vector functions
to all zero-based one-dimensional arrays, shared or not.

    --Per Bothner