A sequence is a Lisp object that represents an ordered set of elements. There are two kinds of sequence in Emacs Lisp: lists and arrays.
Lists are the most commonly-used sequences. A list can hold elements of any type, and its length can be easily changed by adding or removing elements. See the next subsection for more about lists.
Arrays are fixed-length sequences. They are further subdivided into
strings, vectors, char-tables and bool-vectors. Vectors can hold
elements of any type, whereas string elements must be characters, and
bool-vector elements must be t
or nil
. Char-tables are
like vectors except that they are indexed by any valid character code.
The characters in a string can have text properties like characters in
a buffer (see Text Properties), but vectors do not support text
properties, even when their elements happen to be characters.
Lists, strings and the other array types also share important
similarities. For example, all have a length l, and all have
elements which can be indexed from zero to l minus one. Several
functions, called sequence functions, accept any kind of sequence.
For example, the function length
reports the length of any kind
of sequence. See Sequences, Arrays, and Vectors.
It is generally impossible to read the same sequence twice, since
sequences are always created anew upon reading. If you read the read
syntax for a sequence twice, you get two sequences with equal contents.
There is one exception: the empty list ()
always stands for the
same object, nil
.