**Common Lisp the Language, 2nd Edition**

One-dimensional arrays are called *vectors* in Common Lisp
and constitute the type `vector` (which is therefore a subtype of `array`).
Vectors and lists are collectively considered to be
*sequences*. They differ in that any component of a one-dimensional array
can be accessed in constant time,
whereas the average component access time for a
list is linear in the length of the list; on the other hand, adding a new
element to the front of a list takes constant time, whereas the same
operation on an array takes time linear in the length of the array.

A general vector (a one-dimensional array
that can have any data object as an element but that has
no additional paraphernalia) can be notated by notating the
components in order, separated by whitespace and surrounded by `#(`
and `)`.
For example:

#(a b c) ;A vector of length 3 #() ;An empty vector #(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47) ;A vector containing the primes below 50

Note that when the function `read` parses this syntax, it always constructs
a *simple* general vector.

Implementations may provide certain specialized representations of
arrays for efficiency in the case where all the components are of
the same specialized (typically numeric) type. All implementations
provide specialized arrays for the cases when the components
are characters (or rather, a special subset of the characters);
the one-dimensional instances of
this specialization are called *strings*.
All implementations are also required to provide specialized arrays
of bits, that is, arrays of type `(array bit)`;
the one-dimensional instances of
this specialization are called *bit-vectors*.

[email protected]