Comparison of SRFIs 122 and 164 John Cowan (30 Nov 2019 22:07 UTC)
Re: Comparison of SRFIs 122 and 164 Per Bothner (30 Nov 2019 23:28 UTC)
Re: Comparison of SRFIs 122 and 164 John Cowan (01 Dec 2019 03:58 UTC)
Re: Comparison of SRFIs 122 and 164 Per Bothner (01 Dec 2019 06:36 UTC)
Re: Comparison of SRFIs 122 and 164 John Cowan (01 Dec 2019 13:55 UTC)
Re: Comparison of SRFIs 122 and 164 Per Bothner (02 Dec 2019 04:28 UTC)
Re: Comparison of SRFIs 122 and 164 Bradley Lucier (01 Dec 2019 21:16 UTC)
Re: Comparison of SRFIs 122 and 164 Bradley Lucier (01 Dec 2019 01:18 UTC)

Re: Comparison of SRFIs 122 and 164 Bradley Lucier 01 Dec 2019 01:18 UTC

Dear John:

Thank you for making this document.  I have a few comments.

The first, and biggest, is that almost immediately after SRFI 122 was
finalized, I realized that I had left out array-assign! (as you point
out in item (4) below).  In my programming style, I just didn't need it.

So I started working on more examples to see what else might have been
left out, and hosted a fork of SRFI 122 at

https://github.com/gambiteer/srfi-122

with my changes, with the idea of some day introducing a superseding
SRFI.  (And not taking forever to finalize it.)

The forked version of SRFI 122 explains:
==================================================================
This document, the associated implementation in generic-arrays.scm, and
the test file test-arrays.scm differ from the finalized SRFI-122 in the
following ways:

     The abstract has been rewritten to make it more precise.
     The procedures interval-for-each, interval-cartesian-product,
array-outer-product, array-tile, array-assign!, and array-swap! have
been added.
     The discussion of Haar transforms as examples of separable
transforms has been corrected.
     The documentation has a few more examples of image processing
algorithms.
     Some matrix examples have been added to this document and
test-arrays.scm.
==================================================================
These changes are documented at the github repo listed above.

array->vector was another routine I was considering, but hadn't decided
if it was worth adding.

So I don't know when this vote will take place, but I have time in the
next month or so to devote to proposing and (hopefully quickly)
finalizing a better version of SRFI 122.

Some specific responses:

On 11/30/19 5:06 PM, John Cowan wrote:

> 4) SRFI 122 has no general-purpose setter functions such as array-set or
> array-copy!, so all array mutation must be done through the array's own
> setter function, which can be obtained via SRFI 122's extensive
> introspection procedures.  SRFI 164 has general-purpose setters but has
> less introspective ability.

SRFI 122 indeed lacks array-copy!, but array->specialized-array makes a
new copy of an array as a specialized array.

> 5) SRFI 122 provides more convenience functions than SRFI 164, including
> in particular a lazy array-map operator that, given an array and a
> mapping function, provides an array of the second kind.

I find the convenience procedures in the section "Common transformations
on Bawden-style arrays", which define  to be the most important for
practical applications.

Brad