Типы данных Lisp
Объект Lisp — это фрагмент данных, используемый и обрабатываемый программами Lisp. Для наших целей, тип или тип данных — это набор возможных объектов.
Каждый объект принадлежит хотя бы одному типу. Объекты одного типа имеют похожие структуры и, как правило, могут использоваться в одних и тех же контекстах. Типы могут перекрываться, и объекты могут принадлежать двум или более типам. Следовательно, мы можем спросить, принадлежит ли объект конкретному типу, но не определённый тип объекта.
Некоторые фундаментальные типы объектов встроенные в Emacs. Эти типы, из которых строятся все остальные типы, называются примитивными типами. Каждый объект принадлежит одному и только одному примитивному типу. К этим типам относятся целые числа, числа с плавающей запятой, cons, символ, строка, вектор, хеш-таблица, subr, функция байткода и запись, а также несколько специальных типов, таких как буфер, которые связаны с редактированием. (См. Типы редактирования.)
Каждый примитивный тип имеет соответствующую функцию Lisp, которая проверяет, является ли объект членом этого типа.
Lisp отличается от многих других языков тем, что его объекты являются самотипируемыми: примитивный тип каждого объекта неявным образом содержится в самом объекте. Например, если объект является вектором, ничего не может рассматривать его как число; Lisp знает, что это вектор, а не число.
В большинстве языков программист должен объявить тип данных каждой переменной, и тип известен компилятору, но не представлен в данных. Такие объявления типов в Emacs Lisp отсутствуют. Переменная Lisp может иметь любой тип значения, и она запоминает любое значение, которое вы в ней храните, тип и всё остальное. (На самом деле, небольшое количество переменных Emacs Lisp может принимать только значения определённого типа. См. Переменные с ограниченными значениями.)
В этой главе описаны назначение, печатное представление и синтаксис чтения каждого из стандартных типов в GNU Emacs Lisp. Подробности о том, как использовать эти типы, можно найти в последующих главах.
| • Печатное представление | Как объекты Lisp представляются в виде текста. | |
| • Специальный синтаксис чтения | Обзор всех специальных последовательностей. | |
| • Комментарии | Комментарии и их соглашения по форматированию. | |
| • Типы программирования | Типы, встречающиеся во всех системах Lisp. | |
| • Типы редактирования | Типы, специфичные для Emacs. | |
| • Циклические объекты | Синтаксис чтения для циклических структур. | |
| • Предикаты типов | Тесты, связанные с типами. | |
| • Предикаты равенства | Тесты равенства между любыми двумя объектами. | |
| • Изменяемость | Некоторые объекты не должны изменяться. |
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/Lisp-Data-Types.html