Next: , Previous: , Up: Programming Types   [Contents][Index]


8.4.5 Sequence Types

A sequence is a Lisp object that represents an ordered set of elements. There are two kinds of sequence in SXEmacs Lisp, lists and arrays. Thus, an object of type list or of type array is also considered a sequence.

Arrays are further subdivided into strings, vectors, and bit vectors. Vectors can hold elements of any type, but string elements must be characters, and bit vector elements must be either 0 or 1. However, the characters in a string can have extents (see Extents) and text properties (see Text Properties) like characters in a buffer; vectors do not support extents or text properties even when their elements happen to be characters.

Lists, strings, vectors, and bit vectors are different, but they have important similarities. For example, all have a length l, and all have elements which can be indexed from zero to l minus one. Also, several functions, called sequence functions, accept any kind of sequence. For example, the function elt can be used to extract an element of a sequence, given its index. See Sequences Arrays Vectors.

It is 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.