This page is part of the web mail archives of SRFI 25 from before July 7th, 2015. The new archives for SRFI 25 contain all messages, not just those from before July 7th, 2015.
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 leavesit 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