A general purpose template library for Clojure and ClojureScript