Next: Bit Strings, Previous: Lists, Up: MIT/GNU Scheme [Contents][Index]

*Vectors* are heterogenous structures whose elements are indexed by
exact non-negative integers. A vector typically occupies less space
than a list of the same length, and the average time required to access
a randomly chosen element is typically less for the vector than for the
list.

The *length* of a vector is the number of elements that it contains.
This number is an exact non-negative integer that is fixed when the
vector is created. The *valid indexes* of a vector are the exact
non-negative integers less than the length of the vector. The first
element in a vector is indexed by zero, and the last element is indexed
by one less than the length of the vector.

Vectors are written using the notation `#(`

.
For example, a vector of length 3 containing the number zero in element
0, the list `object` …)`(2 2 2 2)`

in element 1, and the string `"Anna"`

in element 2 can be written as

#(0 (2 2 2 2) "Anna")

Note that this is the external representation of a vector, not an expression evaluating to a vector. Like list constants, vector constants must be quoted:

'#(0 (2 2 2 2) "Anna") ⇒ #(0 (2 2 2 2) "Anna")

A number of the vector procedures operate on subvectors. A
*subvector* is a segment of a vector that is specified by two exact
non-negative integers, `start` and `end`. `Start` is the
index of the first element that is included in the subvector, and
`end` is one greater than the index of the last element that is
included in the subvector. Thus if `start` and `end` are the
same, they refer to a null subvector, and if `start` is zero and
`end` is the length of the vector, they refer to the entire vector.
The *valid indexes* of a subvector are the exact integers between
`start` inclusive and `end` exclusive.

Next: Bit Strings, Previous: Lists, Up: MIT/GNU Scheme [Contents][Index]