Символы &form
и &env
представляют специальные переменные, используемые в макросах Clojure: https://clojure.org/reference/macros#_special_variables.
В частности, вы можете использовать переменную &form
для доступа к номеру строки, с которой макросоценивается
(:line (meta &form))
, что полезно при печати сообщений об ошибках и т. д.
Дополнительная информация о поиске сложных символов:
SymbolHound.com - это поисковая система, которая не выделяет такие символы, как Google, поэтому вы можете часто находить там результаты, которые вы не можете найти в других местах.Поиск clojure &form
дает результаты .
Обновление
Глядя на исходный код , мы видим, чтов процессе начальной загрузки Clojure fn
- это макрос, использующий fn*
:
(def
^{:macro true
:added "1.0"}
fn (fn* fn [&form &env & decl]
(.withMeta ^clojure.lang.IObj (cons 'fn* decl)
(.meta ^clojure.lang.IMeta &form))))
Таким образом, компилятор вводит &form
и т. д.