Row-major transform John Cowan (16 Mar 2023 18:33 UTC)
(missing)
Re: Row-major transform John Cowan (16 Mar 2023 21:55 UTC)
Re: Row-major transform Bradley Lucier (16 Mar 2023 22:46 UTC)
Re: Row-major transform Per Bothner (16 Mar 2023 18:49 UTC)

Re: Row-major transform Bradley Lucier 16 Mar 2023 22:46 UTC

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