dcolthorp / matchure

Powerful, idiomatic pattern matching for clojure
159 stars 8 forks source link

first class matching? #2

Open swannodette opened 14 years ago

swannodette commented 14 years ago

I note that it's not possible to do the following:

(def my-match {:foo java.lang.Integer})
(if-match [my-match {:foo 1}] true)

This could be cool since you define types ahead of time and use them conveniently in pre/post:

(def typea {:baz java.lang.String})
(def typeb {:woz java.lang.String})

(defn bar [x y]
  {:pre [(match? [typea x]) (match? [typeb y])]
   :post [(match? [typea %])]}
  (merge x y))