macro | previously cljs.spec/merge | clojure.spec.alpha/merge | Edit |
(merge & pred-forms)
Takes map-validating specs (e.g. 'keys' specs) and returns a spec that returns a conformed map satisfying all of the specs. Successive conformed values propagate through rest of predicates. Unlike 'and', merge can generate maps satisfying the union of the predicates.
(defmacro merge
[& pred-forms]
`(merge-spec-impl '~(mapv #(res &env %) pred-forms) ~(vec pred-forms) nil))