Если я это сделаю, например:
(defmacro qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
он не работает из-за reify
видит (qqq)
вместо ( toString [this] "Qqq")
.
Обычное решение - это макрос, который объединяет вызов "reify" с моим собственным, но он длиннее и навязчивее.
Как чтобы мои макросы были сильнее, чем обычные макросы, которые нужно раскрыть в первую очередь?
Ожидается что-то вроде:
(defmacro ^{:priority 100500} qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
или
(defmacro qqq [] '(toString [this] "Qqq"))
(expand-first #{qqq} (reify Object (qqq)))