Если я хочу разложить макрос в Clojure, есть ли какие-либо различия (функциональные или иные) в объявлении функций или макросов в качестве подкомпонентов?
то есть есть ли различия между
(defn sub-function [x] ...)
(defmacro main-macro [x]
(sub-function x))
vs
(defmacro sub-macro [x] ...)
(defmacro main-macro [x]
(sub-macro x))
Мой список пока таков:
Я не могу
recur
в своем подмакросе, но могу в своей подфункцииЯ не могу реорганизовать свой основной макрос, чтобы использовать вложенный макрос в качестве функции более высокого порядка.
Я могу вызвать свою подфункцию как обычную функцию времени выполнения
Использование подфункций означает, что я не могу вызывать их напрямую как макросы, но я всегда могу обернуть любую подфункцию внутри другого макроса, если мне нужна ее функциональность во время компиляции.
Все эти пункты довольно тривиальны; Существуют ли какие-либо соглашения или более сильные аргументы за/против использования подфункций/подмакросов?