On 3/16/23 5:54 PM, John Cowan wrote:
> That pushes matters along a little further: you get the right behavior
> if the array is specialized.
Well, specialized and the elements are contiguous and in order.
> However, it's not clear to me why
> generalized arrays can't be reshaped, or why non-affine transforms
> expressed as reshapes require eager copying, rather than a lazy
> operation similar to mapping.
One can do that in SRFI 231, but one would have to write the transform
oneself. I.e., if
> (define A (make-array (make-interval '#(2 4 5)) list))
> (define B (make-array (make-interval '#(40))
(let ((A_ (array-getter A)))
(lambda (i)
(A_ (quotient i 20)
(quotient (modulo i 20) 5)
(modulo i 5))))))
> (equal? (array->vector A) (array->vector B))
#t
And B is a generalized array out, not a specialized array. (Of course,
A itself is generalized.)
This appears similar to SRFI 164/Kawa's array-transform.
Brad