Я видел несколько вариантов следующего кода регистрации макроса:В clojure есть рекурсивная версия регистрации кода?
(defmacro log
"for debugging, output code and code->val to stdout, returns val"
[code]
`(let [c# ~code]
(prn '~code)
(clojure.pprint/pprint c#)
c#))
однако, я не видел рекурсивную версию, которая оборачивает все макросы или функциональные формы в коде тела. Кто-нибудь имеет хорошую рабочую реализацию?
EDIT:
Чтобы уточнить, взять, например, следующий код:
(map #(+ % 10) (range 5))
, окружив, что в рекурсивном лог макрос:
(r-log (map #(+ % 10) (range 5)))
макро-расширение, что должно быть:
(log (map #(log (+ % 10)) (log (range 5))))
Вы можете указать пример, что вы ищете? Я почти наверняка не знаю ответа, но я не понимаю, что вы хотите, чтобы код примера не предоставлял. –