Печатное представление и синтаксис чтения
Печатное представление объекта — это формат вывода, генерируемый типографским процессором Lisp (функция prin1) для этого объекта. Каждый тип данных имеет уникальное печатное представление. Синтаксис чтения объекта — это формат входных данных, принимаемых читателем Lisp (функция read) для этого объекта. Он не обязательно уникален; многие типы объектов имеют более одного синтаксиса. См. Чтение и печать.
В большинстве случаев печатное представление объекта также является синтаксисом чтения для этого объекта. Однако некоторые типы не имеют синтаксиса чтения, так как нет смысла вводить объекты этих типов как константы в программе Lisp. Эти объекты печатаются в нотации хешей, которая состоит из символов «#<», описательной строки (обычно имя типа, за которым следует имя объекта), и закрывающего «>». Например:
(current-buffer)
⇒ #<buffer objects.texi>
Нотация хешей не может читаться вообще, поэтому читатель Lisp сигнализирует об ошибке invalid-read-syntax, когда встречает «#<».
В других языках выражение является текстом; у него нет другой формы. В Lisp выражение прежде всего является объектом Lisp, а во вторую очередь — текстом, который является синтаксисом чтения объекта. Зачастую нет необходимости подчеркивать это различие, но вы должны держать его в уме, иначе иногда будете очень сбиты с толку.
При интерактивном вычислении выражения интерпретатор Lisp сначала считывает текстовое представление, создавая объект Lisp, а затем вычисляет этот объект (см. Вычисление). Однако вычисление и чтение — это отдельные действия. Чтение возвращает объект Lisp, представленный прочитанным текстом; объект может или не может быть вычислен позже. См. Функции ввода для описания read, основной функции для чтения объектов.
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/Printed-Representation.html