Тип sequence является объединением двух других типов Lisp: списков и массивов. Другими словами, любой список является последовательностью, и любой массив является последовательностью. Общим свойством всех последовательностей является то, что каждая из них представляет собой упорядоченную коллекцию элементов.
Массив array — это объект фиксированной длины с ячейкой для каждого из его элементов. Все элементы доступны за константное время. Четыре типа массивов — это строки, векторы, таблицы символов и булевы векторы.
Список — это последовательность элементов, но это не единый примитивный объект; он состоит из ячеек cons, по одной ячейке на каждый элемент. Поиск n-го элемента требует просмотра n ячеек cons, поэтому доступ к элементам, расположенным дальше от начала списка, занимает больше времени. Но возможно добавлять элементы в список или удалять элементы.
Следующая диаграмма показывает взаимосвязь между этими типами:
_____________________________________________
| |
| Sequence |
| ______ ________________________________ |
| | | | | |
| | List | | Array | |
| | | | ________ ________ | |
| |______| | | | | | | |
| | | Vector | | String | | |
| | |________| |________| | |
| | ____________ _____________ | |
| | | | | | | |
| | | Char-table | | Bool-vector | | |
| | |____________| |_____________| | |
| |________________________________| |
|_____________________________________________|