Re: Developing on separate git fork and left-over SRFI 122 issues, particularly immutable specialized arrays. Bradley Lucier 30 Apr 2020 00:55 UTC

On 4/28/20 3:59 PM, Bradley Lucier wrote:
> For the moment I'm developing on
>
> https://github.com/gambiteer/srfi-179

Latest git commit message follows.  I'll now ask Arthur to issue a new
draft.

Brad

Implement immutable specialized arrays

Shared specialized arrays inherit their safety/mutability from
the source array.

Homogeneous storage classes must be defined using homogeneous vectors,
or defined as #f.

Specific changes:

generic-arrays.scm:

1.  Define macro-absent-obj for non-Gambit systems (unfortunately,
     not as a macro).

2.  Define specialized-array-default-mutable?, with initial default #t.

3.  Change specialized-array? to allow immutable specialized arrays.

4.  Allow array->specialized-array and list->specialized-array to
     return immutable arrays.

5.  Shared specialized arrays are now safe/mutable iff the source arrays are
     safe/mutable.  Refactor specialized-array-share, pull out
     %%specialized-array-share.

6.  Refactor make-specialized-array, pull out %%make-specialized-array.
     The result of make-specialized-array must be mutable.

7.  Translated, extracted, permuted, rotated, reversed, sampled
     specialized arrays inherit safety and mutability from the source
     array.  The subarrays of curried and tiled specialized arrays
     inherit safety and mutability from the source array.

8.  Use more internal "%%" routines to eliminate redundant
     argument checks.

9.  Describe what f8-storage-class and f16-storage-class would do, but
     define them to be #f (i.e., the sample implementation does not
     manipulate homogeneous vectors of such types).

test-arrays.scm:

1.  Error tests of the extra arguments to array->specialized-array and
     list->specialized-array.

2.  Make error messages match those in generic-arrays.scm.

srfi-179.scm

1.  Document specialized-array-default-mutable?
     Use it in array->specialized array and
     list->specialized-array.

2.  Document the copier field of a storage class.

3.  Document f8-storage-class and f16-storage-class.

4.  Implementations must define all the standard storage classes,
     but they may define some to be #f (so programmers can inquire
     which are implemented).

5.  make-specialized-array always returns a mutable specialized array.

6.  New draft.

7.  Update list of changes to SRFI 122.

srfi-179.html:

1.  Regenerate from srfi-179.scm.

compare-code-and-srfi.scm:

1.  Internal procedures now begin with %, not #.