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