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 (SeeText 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 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’.