Последовательность (sequence) — это объект Lisp, который представляет упорядоченный набор элементов. В Emacs Lisp существует два вида последовательностей: списки (lists) и массивы (arrays).
Списки являются наиболее часто используемыми последовательностями. Список может содержать элементы любого типа, и его длину легко изменить путем добавления или удаления элементов. Подробнее о списках см. в следующем разделе.
Массивы — это последовательности фиксированной длины. Они подразделяются на строки (strings), векторы (vectors), таблицы символов (char-tables) и булевы векторы (bool-vectors). Векторы могут содержать элементы любого типа, тогда как элементы строк должны быть символами, а элементы булевых векторов должны быть t или nil. Таблицы символов похожи на векторы, за исключением того, что они индексируются любым допустимым кодом символа. Символы в строке могут иметь текстовые свойства, как символы в буфере (см. Текстовые свойства), но векторы не поддерживают текстовые свойства, даже если их элементы являются символами.
Списки, строки и другие типы массивов также имеют важные сходства. Например, у всех есть длина l, и все имеют элементы, которые можно индексировать от нуля до l минус один. Несколько функций, называемых функциями последовательностей, принимают любую последовательность. Например, функция length сообщает длину любой последовательности. См. Последовательности, массивы и векторы.
Как правило, невозможно прочитать одну и ту же последовательность дважды, поскольку последовательности всегда создаются заново при чтении. Если вы дважды прочитаете синтаксис чтения для последовательности, вы получите две последовательности с одинаковым содержимым. Есть одно исключение: пустой список () всегда соответствует одному и тому же объекту, nil.