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