Поиск…


Синтаксис

  • (объект цитаты) -> объект

замечания

Есть некоторые объекты (например, символы ключевых слов), которые не нужно указывать, поскольку они сами оценивают.

Пример простой цитаты

Цитата - это специальный оператор, который предотвращает оценку его аргумента. Он возвращает свой аргумент, неоценимый.

CL-USER> (quote a)
A

CL-USER> (let ((a 3))
           (quote a))
A

'является псевдонимом для специального оператора QUOTE

Обозначение 'thing равно (quote thing) .

Читатель будет делать расширение:

> (read-from-string "'a")
(QUOTE A)

Цитирование используется для предотвращения дальнейшей оценки. Выделенный объект оценивается сам по себе.

> 'a
A

> (eval '+ 1 2)
3

Если цитируемые объекты деструктивно изменены, последствия не определены!

Избегайте разрушительных операций с цитируемыми объектами. Объекты с котировкой - это литеральные объекты. Возможно, они каким-то образом встроены в код. Как это работает, и последствия изменений не указаны в стандарте Common Lisp, но могут иметь нежелательные последствия, такие как изменение общих данных, попытка изменить данные, защищенные от записи, или создание непреднамеренных побочных эффектов.

(delete 5 '(1 2 3 4 5))

Цитата и самооценка объектов

Обратите внимание, что многие типы данных не нужно указывать, так как они сами оценивают. QUOTE особенно полезна для символов и списков, чтобы предотвратить оценку в виде форм Лиспа.

Пример для других типов данных, которые не нужно указывать для предотвращения оценки: строки, числа, символы, объекты CLOS, ...

Вот пример для строк. Результаты оценки - это строки, независимо от того, указаны они в источнике или нет.

> (let ((some-string-1 "this is a string")
        (some-string-2 '"this is a string with a quote in the source")
        (some-string-3 (quote "this is another string with a quote in the source")))
    (list some-string-1 some-string-2 some-string-3))

("this is a string"
 "this is a string with a quote in the source"
 "this is another string with a quote in the source")

Таким образом, предложение для объектов необязательно.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow