Next: VLists, Previous: Bytevectors, Up: Data Types [Contents][Index]

*Arrays* are a collection of cells organized into an arbitrary
number of dimensions. Each cell can be accessed in constant time by
supplying an index for each dimension.

In the current implementation, an array uses a vector of some kind for
the actual storage of its elements. Any kind of vector will do, so you
can have arrays of uniform numeric values, arrays of characters, arrays
of bits, and of course, arrays of arbitrary Scheme values. For example,
arrays with an underlying `c64vector`

might be nice for digital
signal processing, while arrays made from a `u8vector`

might be
used to hold gray-scale images.

The number of dimensions of an array is called its *rank*. Thus,
a matrix is an array of rank 2, while a vector has rank 1. When
accessing an array element, you have to specify one exact integer for
each dimension. These integers are called the *indices* of the
element. An array specifies the allowed range of indices for each
dimension via an inclusive lower and upper bound. These bounds can
well be negative, but the upper bound must be greater than or equal to
the lower bound minus one. When all lower bounds of an array are
zero, it is called a *zero-origin* array.

Arrays can be of rank 0, which could be interpreted as a scalar. Thus, a zero-rank array can store exactly one object and the list of indices of this element is the empty list.

Arrays contain zero elements when one of their dimensions has a zero length. These empty arrays maintain information about their shape: a matrix with zero columns and 3 rows is different from a matrix with 3 columns and zero rows, which again is different from a vector of length zero.

The array procedures are all polymorphic, treating strings, uniform numeric vectors, bytevectors, bit vectors and ordinary vectors as one dimensional arrays.

• Array Syntax | ||

• Array Procedures | ||

• Shared Arrays | ||

• Arrays as arrays of arrays | ||

• Accessing Arrays from C |

Next: VLists, Previous: Bytevectors, Up: Data Types [Contents][Index]