Common Lisp the Language, 2nd Edition
Next: Strings
Up: Arrays
Previous: Arrays
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.
Rationale: Many people have suggested that brackets
be used to notate vectors, as [a b c]
instead of
#(a b c)
. This notation would be shorter, perhaps more
readable, and certainly in accord with cultural conventions in other
parts of computer science and mathematics. However, to preserve the
usefulness of the user-definable macro-character feature of the function
read
, it is necessary to leave some characters to the user
for this purpose. Experience in MacLisp has shown that users, especially
implementors of languages for use in artificial intelligence research,
often want to define special kinds of brackets. Therefore Common Lisp
avoids using brackets and braces for any syntactic purpose.
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.
Next: Strings
Up: Arrays
Previous: Arrays
AI.Repository@cs.cmu.edu