WriteableHeaderInstances

object WriteableHeaderInstances extends Contravariant[WriteableHeader]
trait Contravariant[WriteableHeader]
trait Invariant[WriteableHeader]
trait Serializable
class Object
trait Matchable
class Any

Value members

Concrete methods

override def contramap[A, B](fa: WriteableHeader[A])(f: B => A): WriteableHeader[B]
Definition Classes
Contravariant

Inherited methods

def compose[G[_] : Contravariant]: Functor[[α] =>> WriteableHeader[G[α]]]
Inherited from:
Contravariant
def compose[G[_] : Invariant]: Invariant[[α] =>> WriteableHeader[G[α]]]

Compose Invariant F[_] and G[_] then produce Invariant[F[G[_]]] using their imap.

Compose Invariant F[_] and G[_] then produce Invariant[F[G[_]]] using their imap.

Example:

scala> import cats.implicits._
scala> import scala.concurrent.duration._

scala> val durSemigroupList: Semigroup[List[FiniteDuration]] =
    | Invariant[Semigroup].compose[List].imap(Semigroup[List[Long]])(Duration.fromNanos)(_.toNanos)
scala> durSemigroupList.combine(List(2.seconds, 3.seconds), List(4.seconds))
res1: List[FiniteDuration] = List(2 seconds, 3 seconds, 4 seconds)
Inherited from:
Invariant
def composeContravariant[G[_] : Contravariant]: Invariant[[α] =>> WriteableHeader[G[α]]]

Compose Invariant F[_] and Contravariant G[_] then produce Invariant[F[G[_]]] using F's imap and G's contramap.

Compose Invariant F[_] and Contravariant G[_] then produce Invariant[F[G[_]]] using F's imap and G's contramap.

Example:

scala> import cats.implicits._
scala> import scala.concurrent.duration._

scala> type ToInt[T] = T => Int
scala> val durSemigroupToInt: Semigroup[ToInt[FiniteDuration]] =
    | Invariant[Semigroup]
    |   .composeContravariant[ToInt]
    |   .imap(Semigroup[ToInt[Long]])(Duration.fromNanos)(_.toNanos)
// semantically equal to (2.seconds.toSeconds.toInt + 1) + (2.seconds.toSeconds.toInt * 2) = 7
scala> durSemigroupToInt.combine(_.toSeconds.toInt + 1, _.toSeconds.toInt * 2)(2.seconds)
res1: Int = 7
Inherited from:
Invariant
override def composeFunctor[G[_] : Functor]: Contravariant[[α] =>> WriteableHeader[G[α]]]
Definition Classes
Contravariant -> Invariant
Inherited from:
Contravariant
override def imap[A, B](fa: WriteableHeader[A])(f: A => B)(fi: B => A): WriteableHeader[B]
Definition Classes
Contravariant -> Invariant
Inherited from:
Contravariant
def liftContravariant[A, B](f: A => B): WriteableHeader[B] => WriteableHeader[A]
Inherited from:
Contravariant
def narrow[A, B <: A](fa: WriteableHeader[A]): WriteableHeader[B]

Lifts natural subtyping contravariance of contravariant Functors. could be implemented as contramap(identity), but the Functor laws say this is equivalent

Lifts natural subtyping contravariance of contravariant Functors. could be implemented as contramap(identity), but the Functor laws say this is equivalent

Inherited from:
Contravariant