belated feedback Alex Shinn (16 Apr 2021 15:00 UTC)
Re: belated feedback Bradley Lucier (16 Apr 2021 17:08 UTC)
Re: belated feedback John Cowan (16 Apr 2021 18:25 UTC)
Re: belated feedback Bradley Lucier (17 Apr 2021 21:48 UTC)
Re: belated feedback Alex Shinn (18 Apr 2021 23:45 UTC)
Re: belated feedback Bradley Lucier (16 Apr 2021 23:46 UTC)
Re: belated feedback Alex Shinn (17 Apr 2021 00:03 UTC)
Re: belated feedback Bradley Lucier (17 Apr 2021 01:10 UTC)
Re: belated feedback Alex Shinn (17 Apr 2021 01:22 UTC)
Re: belated feedback Alex Shinn (30 Apr 2021 05:41 UTC)
Re: belated feedback Bradley Lucier (30 Apr 2021 14:17 UTC)
Re: belated feedback John Cowan (30 Apr 2021 15:04 UTC)
Re: belated feedback Bradley Lucier (30 Apr 2021 16:42 UTC)
Re: belated feedback Alex Shinn (01 May 2021 09:27 UTC)
array-elements-in-order? (Was: belated feedback) Bradley Lucier (16 Jan 2022 19:08 UTC)

belated feedback Alex Shinn 16 Apr 2021 14:59 UTC

Hi Bradley,

First, thank you for all the work you put into this beautiful SRFI.
There have been a plethora of array SRFIs, but none as comprehensive.
I'm sorry I didn't have time to contribute to the original discussion,
but have gone through recently, and have written a clean room,
portable R7RS implementation:

https://github.com/ashinn/chibi-scheme/blob/master/lib/srfi/179.scm

It passes your test suite, though I had to comment out many tests
which made use of internals of your implementation.  I also want to
make the test suite deterministic - randomized tests are extremely
difficult to work with.

For specialized-array-reshape, I was lazy and took advantage of the
fact that indexing is reversible (though not necessarily as an affine
transformation), and created a custom indexer which is the following
composition:

  (compose orig-indexer invert-orig-indexer new-domain-indexer)

Thus the reshape never fails.  However, I intend to flatten all of the
affine transformations next, at which point I'll need to implement
this properly.

f8-storage-class and f16-storage-class are bound to #f.

Planned upcoming applications of arrays:

* images: a standard representation should probably be a SRFI of its own
* linear algebra: wrapping blas and/or cuda, with NNs a trivial application
* data frames: matrices with named columns, ideally using
column-oriented storage classes

Some minor comments on the document itself:

In interval-cartesian-product, the definition refers to
array-lower/upper-bounds->list, which should presumably be
interval-lower/upper-bounds->list.

What are the default values of the safe/mutable parameters?

The name and description of array-elements-in-order? is misleading,
suggesting it is the elements themselves which must be in order.
Perhaps array-indices-in-order? or array-contiguous-and-in-order?
would have been better.

--
Alex