If I do, for example:
(defmacro qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
it fails because of reify
sees (qqq)
instead of (toString [this] "Qqq")
.
The usual solution is a macro that wraps "reify" call with my own thing, but it is longer and more intrusive.
How to make my macros stronger that usual macros to be expanded first?
Expecting something like:
(defmacro ^{:priority 100500} qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
or
(defmacro qqq [] '(toString [this] "Qqq"))
(expand-first #{qqq} (reify Object (qqq)))
expand-first
can be implemented externally (and later included in Clojure). Trying to do that. – Lazar