5) It should be explicitly stated that arrays, specialized arrays, and
intervals are disjoint types.
I'm not going to argue against this, but let me ask "why?" Translations and permutations are not disjoint types. And a specialized-array is an array, so in what way are these types disjoint?
I introduced two procedures, specialized-array-default-safe? and specialized-array-default-safe ?-set!
So, do you think I still need to explain something?
I don't know what you mean. The (heavily-macrofied) C code generated by Gambit [...]
The three arguments are stored in registers R1, R2, and R3, the return address is stored in R0, and there's a direct jump to the label for the code for getter, which has been put into ___STK(-5). I don't see any lists.
Array-ref and array-set! convenience methods for getting and setting
without explicitly retrieving the getter/setter.
I'm trying to offer alternatives to word-at-a-time array processing in this SRFI.
Whole-array functions: array-fold (fold in lexicographic order),
array-reduce, array-scan (APL), array-count, array-index. All of these
are basically equivalent to converting the array to a list and operating
on the list, but much more space and time efficient.
I don't know what these do: array-scan, array-count, array-index.
(array-cumulate proc array dim)
Returns a newly allocated array whose domain is the same as the domain of array. Each element along dimension dim is constructed by reducing (as if by array-reduce) successive prefixes of the elements of array along that axis. (APL scan.)
array-count returns the number of array elements that satisfy a predicate, and index returns the first such element in lexicographic order.
I have array-reduce; how does it differ from array-fold?