status: *final* (2020-06-30)

keywords: Data Structure, Numbers

See also SRFI 122: Nonempty Intervals and Generalized Arrays, SRFI 164: Enhanced multi-dimensional Arrays, and SRFI 231: Intervals and Generalized Arrays.- The SRFI Document
- Discussion Archive
- Git repo (on Github)
- srfi-179@nospamsrfi.schemers.org (subscribers only)

This SRFI specifies an array mechanism for Scheme. Arrays as defined here are quite general; at their most basic, an array is simply a mapping, or function, from multi-indices of exact integers $i_0,\ldots,i_{d-1}$ to Scheme values. The set of multi-indices $i_0,\ldots,i_{d-1}$ that are valid for a given array form the *domain* of the array. In this SRFI, each array's domain consists of the cross product of nonempty intervals of exact integers $[l_0,u_0)\times[l_1,u_1)\times\cdots\times[l_{d-1},u_{d-1})$ of $\mathbb Z^d$, $d$-tuples of integers. Thus, we introduce a data type called $d$-*intervals*, or more briefly *intervals*, that encapsulates this notion. (We borrow this terminology from, e.g., Elias Zakon's Basic Concepts of Mathematics.) Specialized variants of arrays are specified to provide portable programs with efficient representations for common use cases.