Any Clojure code should work inside proxy.
Behind the scenes, Clojure functions are compiled into Java objects anyway, and calling the Clojure function is technically a Java method call. Macro extension still works normally with proxy. Reader macros work fine, etc.
user> (defmacro foo [] "FOO")
#'user/foo
user> (.toString (proxy [Object] []
(toString []
(str (foo) \space (reduce + (range 5))))))
"FOO 10"
source
share