clojure structure and type matcher library