module Data.Range.Algebra.Predicate where import Data.Range.Algebra.Internal predicateAlgebra :: Algebra RangeExprF (a -> Bool) predicateAlgebra (Invert f) a = not (f a) predicateAlgebra (Union f g) a = f a || g a predicateAlgebra (Intersection f g) a = f a && g a predicateAlgebra (Difference f g) a = f a && not (g a)