У меня есть вопрос о некотором кодексе в библиотеке compojure Clojure.Функции Clojure и gensym
(defn compile-route
"Compile a route in the form (method path & body) into a function."
[method route bindings body]
`(make-route
~method ~(prepare-route route)
(fn [request#]
(let-request [~bindings request#] [email protected]))))
Я только видел gensyms, используемую в контексте макросов, где они используются для предотвращения столкновений между креплениями, используемых в макросе и привязками в локальной области видимости.
Я бы подумал, что, поскольку выше это функция, а не макрос, он невосприимчив к этому. Поэтому мне интересно, какое обоснование для написания этой функции, как макроса.
(В случае, если вам интересно, я проверил совершить историю, чтобы увидеть, если эта функция была изначально написана как макрос. Это не было.)