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 #.