[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: various comments



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