Spec-Zone.ru › Elisp

Печатное представление и синтаксис чтения

Печатное представление объекта — это формат вывода, создаваемого принтером Lisp (функцией prin1) для этого объекта. Для каждого типа данных существует уникальное печатное представление. Синтаксис чтения объекта — это формат ввода, принимаемый считывателем Lisp (функцией read) для этого объекта. Он не обязательно уникален: многие виды объектов имеют более одного синтаксиса. См. Чтение и печать объектов Lisp.

В большинстве случаев печатное представление объекта также является синтаксисом чтения для него. Однако у некоторых типов нет синтаксиса чтения, поскольку вводить объекты этих типов в качестве констант в программе Lisp не имеет смысла. Такие объекты печатаются в хеш-нотации, состоящей из символов «#<», описательной строки (обычно это имя типа, за которым следует имя объекта) и закрывающего символа «>». (Она называется «хеш-нотацией», поскольку начинается с символа «#», известного как «хеш» или «знак номера».) Например:

(current-buffer)
     ⇒ #<buffer objects.texi>

Хеш-нотацию невозможно прочитать, поэтому считыватель Lisp сигнализирует об ошибке invalid-read-syntax всякий раз, когда встречает «#<».

Синтаксис чтения и печатное представление каждого типа данных Lisp описаны в разделах этой главы, посвящённых соответствующему типу данных. Например, см. Тип строка и подразделы о синтаксисе чтения и печатном представлении строк; см. Тип вектор и аналогичную информацию о векторах и т. д.

В других языках выражение — это текст; никакой другой формы у него нет. В Lisp выражение — это прежде всего объект Lisp и лишь во вторую очередь текст, являющийся синтаксисом чтения этого объекта. Часто нет необходимости подчёркивать это различие, но его следует иметь в виду, иначе время от времени вы будете сильно недоумевать.

При интерактивном вычислении выражения интерпретатор Lisp сначала считывает его текстовое представление, создавая объект Lisp, а затем вычисляет этот объект (см. Вычисление). Однако вычисление и чтение — отдельные действия. Чтение возвращает объект Lisp, представленный считанным текстом; этот объект может быть вычислен позднее, а может и не быть. См. Функции ввода с описанием read — основной функции для чтения объектов.

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/Printed-Representation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API