clojure.core unquote и unquote-splicing - PullRequest
5 голосов
/ 11 июля 2011

В верхней части файла clojure.core (под комментариями и объявлением пространства имен) есть два определения без дополнительного кода или информации:

(def unquote)
(def unquote-splicing)

Что они делают / почему они существуют

1 Ответ

6 голосов
/ 11 июля 2011

Это своего рода фиктивные значения. Считыватель расширяет ~x до (unquote x) и ~@x до (unquote-splice x). Списки этих типов затем обрабатываются специально в синтаксической кавычке.

Их объявление позволяет также использовать их вне синтаксической кавычки, например, в ваших собственных макросах.

Поскольку они ни к чему не привязаны, их использование вне синтаксической кавычки или макроса, который их обрабатывает, вызывает исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...