clojure.spec.alpha
currently holds a privileged position as a core library for Clojure core, being able to instrument macros as well as functions. Compiler.java
relies on clojure.spec.alpha
in this function, calling macroexpand-check specifically. This is a neat interaction and macroexpand-check
is simple and obvious.
Other tools (such as Malli) can provide instrumentation for Clojure functions through alter-var-root
(as seen in malli.instrument/-strument!), but they lack the ability to hook into macro-expansions.
It would be nice if Compiler.checkSpecs
had some hook to allow for tools such as Malli to be used to instrument macros.