10.3 Кавычки

Специальная форма quote возвращает свой единственный аргумент в том виде, в котором он записан, без его вычисления. Это позволяет включать константные символы и списки, которые не являются самовычисляемыми объектами, в программу. (Не обязательно кавычить самовычисляемые объекты, такие как числа, строки и векторы.)

Специальная форма: quote object

Эта специальная форма возвращает object без его вычисления. Возвращаемое значение может быть общим и не должно изменяться. См. Самовычисляемые формы.

Поскольку quote очень часто используется в программах, Lisp предоставляет удобный синтаксис чтения для него. Апостроф (‘'’), за которым следует объект Lisp (в синтаксисе чтения), расширяется в список, первый элемент которого — quote, а второй элемент — этот объект. Таким образом, синтаксис чтения 'x является сокращением для (quote x).

Ниже приведены примеры выражений, использующих quote:

(quote (+ 1 2))
     ⇒ (+ 1 2)
(quote foo)
     ⇒ foo
'foo
     ⇒ foo
''foo
     ⇒ 'foo
'(quote foo)
     ⇒ 'foo
['foo]
     ⇒ ['foo]

Хотя выражения (list '+ 1 2) и '(+ 1 2) обе дают списки, равные (+ 1 2), первое дает свежесозданный изменяемый список, тогда как второе дает список, составленный из консов, который может быть общим и не должен изменяться. См. Самовычисляемые формы.

Другие конструкции кавычивания включают function (см. Анонимные функции), которая заставляет скомпилировать анонимное лямбда-выражение, написанное на Lisp, и ‘`’ (см. Обратные кавычки), которая используется для кавычивания только части списка, при вычислении и подстановке других частей.