elisp: Sequence Type
2.3.5 Sequence Types
--------------------
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 (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.
Sequences Arrays 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’.