Последовательности, массивы и векторы
Тип последовательность представляет собой объединение двух других типов Lisp: списков и массивов. Иными словами, любой список является последовательностью, как и любой массив. Общее свойство всех последовательностей заключается в том, что каждая из них представляет собой упорядоченную коллекцию элементов.
Массив — это объект фиксированной длины, в котором для каждого элемента предусмотрен слот. Доступ ко всем элементам осуществляется за постоянное время. Существует четыре типа массивов: строки, векторы, символьные таблицы и булевы векторы.
Список — это последовательность элементов, но не единый примитивный объект: он состоит из конс-ячеек, по одной на каждый элемент. Чтобы найти n-й элемент, требуется просмотреть n конс-ячеек, поэтому доступ к элементам, расположенным дальше от начала списка, занимает больше времени. Однако в список можно добавлять элементы и удалять их.
На следующей схеме показаны связи между этими типами:
_____________________________________________
| |
| Sequence |
| ______ ________________________________ |
| | | | | |
| | List | | Array | |
| | | | ________ ________ | |
| |______| | | | | | | |
| | | Vector | | String | | |
| | |________| |________| | |
| | ____________ _____________ | |
| | | | | | | |
| | | Char-table | | Bool-vector | | |
| | |____________| |_____________| | |
| |________________________________| |
|_____________________________________________|
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Sequences-Arrays-Vectors.html