Contravariant[F]
provides implicit evidence that F[-_]
is a contravariant endofunctor in the category of Scala objects.
Contravariant
instances of type F[A]
"consume" values of type A
in some sense. For example, Equal[A]
takes two values of type A
as input and returns a Boolean
indicating whether they are equal. Similarly, a Ord[A]
takes two values of type A
as input and returns an Ordering
with the result of comparing them and Hash
takes an A
value and returns an Int
.
Common examples of contravariant instances in ZIO include effects with regard to their environment types, sinks with regard to their input type, and polymorphic queues and references regarding their input types.
Contravariant
instances support a contramap
operation, which allows transforming the input type given a function from the new input type to the old input type. For example, if we have an Ord[Int]
that allows us to compare two integers and we have a function String => Int
that returns the length of a string, then we can construct an Ord[String]
that compares strings by computing their lengths with the provided function and comparing those.
Attributes
- Companion
- object
- Graph
-
- Supertypes
- Known subtypes
-
trait ContravariantDeriveEqual[F]
- Self type