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

Re: various comments

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.

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.