Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Contravariant

Lean: Hale.Base.Contravariant | Haskell: Data.Functor.Contravariant

Overview

Contravariant functors — types that consume values rather than produce them. Where a covariant functor maps over outputs, a contravariant functor maps over inputs.

API Mapping

LeanHaskellKind
Contravariant classContravariantTypeclass
contramapcontramapMethod
PredicatePredicateType
EquivalenceEquivalenceType
LawfulContravariant class(lawful)Typeclass

Instances

  • Contravariant Predicate
  • Contravariant Equivalence
  • LawfulContravariant Predicate
  • LawfulContravariant Equivalence

Proofs & Guarantees

  • contramap_idcontramap id = id (via LawfulContravariant)
  • contramap_compcontramap (f . g) = contramap g . contramap f (via LawfulContravariant)

Example

-- Adapt a predicate on Nat to work on String via length
Contravariant.contramap String.length (Predicate.mk (· > 3))
-- Now accepts strings with length > 3