here's something fun I cooked up by combining the reader and analyzer. it sort of fully qualifies everything even under macros
typed.clj.refactor=> (refactor-form-string "+" {})
"clojure.core/+"
typed.clj.refactor=> (refactor-form-string "(defn foo [a] (+ a 3))" {})
"(clojure.core/defn foo [a__#0] (clojure.core/+ a__#0 3))"
typed.clj.refactor=> (refactor-form-string "(defmacro foo [a] `(+ ~a 3))" {})
"(clojure.core/defmacro foo [a__#0] `(+ ~a__#0 3))"