Let's ask lambdabot: <liyang> @faq Is Predicate a functor? <lambdabot> The answer is: Yes! Haskell can do that. From Data.Functor.Contravariant: class Contravariant f where contramap ∷ (b → a) → f a → f bThis characterises contravariant functors. Note that contramap swaps the direction of the arrow, in contrast to fmap: g ∷ a ← b contramap g ∷ f a → f bLet's make a Contravariant Predicate: {-# LAN