An arrays proposal for R7RS Large

I'm preparing a proposal for programming with arrays, based largely on SRFI 231, for R7RS Large. SRFI 231 is here:

This month I began discussing on the SRFI 231 mail list what changes to SRFI 231 might be necessary:

and I've been making changes to a branch in my private repository:

Jens Axel Søgaard suggested I might extend the discussion to the Racket Discourse. With the size and wide range of interests in the Racket community, I think that's a good idea.

I'll communicate between this forum and the mail list in the hope that discussions won't get too fragmented, and we can assess later whether this is working. There may be some duplication.

I'll start with technical issues in the next message. There's some history after the signature.

Brad Lucier

I started thinking about programming with arrays in the early 1990s, when I started working in the field of (multi-dimensional) image processing.

I moved this work in Scheme in the mid-to-late 1990s after writing a wavelet image compression code in C++ with "friend" classes and other complications (the necessity of which was confirmed by one of my "C++ expert" colleagues), when all I really needed was a lambda.

In 2015 I started to formalize my ideas in SRFI 122. Realizing that that SRFI was very inadequate, I extended it with SRFI 179 in 2020.

And SRFI 179 attracted the attention of some interested and knowledgeable Schemers, who pointed out deficiencies soon after finalization. Many of these were addressed in SRFI 231 in 2022.

During the development of SRFI 231, I studied other array libraries (particularly Python's NumPy and Racket's math/array) to understand their design and, to some extent, their implementation. My goal now is to have a library with sufficient expressiveness and the possibility of efficient (perhaps future) implementations.

4 Likes