Emacs Lisp представляет многие специальные объекты и конструкции с помощью специальных хеш-обозначений.
Объекты, не имеющие синтаксиса чтения, представлены так (см. Печатное представление и синтаксис чтения).
Печатное представление интернированного символа, имя которого является пустой строкой (см. Тип символа).
Это сокращение для function, см. Анонимные функции.
Печатное представление неинтернированного символа, имя которого foo, это ‘#:foo’ (см. Тип символа).
При печати циклических структур эта конструкция используется для представления того, где структура замыкается сама в себя, и ‘N’ — начальный счетчик списка:
(let ((a (list 1))) (setcdr a a)) => (1 . #0)
‘#N=’ дает имя объекту, а ‘#N#’ представляет этот объект, поэтому при чтении объекта они будут одним и тем же объектом, а не копиями (см. Синтаксис чтения для циклических объектов).
‘N’ представлен в виде шестнадцатеричного числа (‘#x2a’).
‘N’ представлен в виде восьмеричного числа (‘#o52’).
‘N’ представлен в виде двоичного числа (‘#b101010’).
Свойства строкового текста (см. Свойства текста в строках).
Таблица символов (см. Тип таблицы символов).
Хеш-таблица (см. Тип хеш-таблицы).
Символ (см. Базовый синтаксис символов).
Текущее имя файла в байт-скомпилированных файлах (см. Строки документации и компиляция). Это не предназначено для использования в исходных файлах Emacs Lisp.
Пропустить следующие ‘N’ символов (см. Комментарии). Это используется в байт-скомпилированных файлах и не предназначено для использования в исходных файлах Emacs Lisp.
Указывает, что следующая форма не может быть прочитана парсером Emacs Lisp. Это используется только для отображения (когда это выглядело бы красивее, чем альтернативные способы указания на нечитаемую форму) и никогда не появится ни в одном файле Lisp.