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

Re: various comments

Per Bothner writes:

> 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.

If I do so:

(define vec (vector "a" "b" "c"))
(define arr (share-array vec (shape 0 3) (lambda (j) (- 2 j))))

Then vec is a simple R5RS vector, but it is also the backing vector of
arr, and thus sharable and indeed shared, though it does not know it,
so to speak.

Now if I do further:

(define arr1 (share-array arr (shape 0 3) (lambda (j) (- 2 j))))

Then I get essentially the same array as vec. Its implementation might
be more expensive, though, while vec remains oblivious to all that is
going on.

Just thinking aloud...

> 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.

"Encouraged" is the right language. They might even be encouraged to
notice that arr1 can be implemented simply as vec.