(def every-true? (partial every? true?))
(def some-true? (comp not nil? (partial some #{true})))
(defn union
[& predicates]
(fn [& obj]
(every-true? (map (fn [predicate] (apply predicate obj)) predicates))))
(defn intersection
[& predicates]
(fn [& obj]
(some-true? (map (fn [predicate] (apply predicate obj)) predicates))))
(defn cartesian-product
[& predicates]
(fn [& obj]
(and
(= (count obj) (count predicates))
(every-true?
(map
(fn [i]
(apply (nth predicates i) (nth obj i)))
(range 0 (count obj)))))))
Monday, August 15, 2011
Basic predicate functions
After discussing sets and predicates in my previous post I have come up with some basic predicate functions:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment