trait Comonad[F[_]] extends CoflatMap[F] with Serializable

Comonad

Comonad is the dual of Monad. Whereas Monads allow for the composition of effectful functions, Comonads allow for composition of functions that extract the value from their context.

Must obey the laws defined in cats.laws.ComonadLaws.

Source
Comonad.scala
Linear Supertypes
CoflatMap[F], Functor[F], Invariant[F], Serializable, Serializable, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Comonad
  2. CoflatMap
  3. Functor
  4. Invariant
  5. Serializable
  6. Serializable
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def coflatMap[A, B](fa: F[A])(f: (F[A]) ⇒ B): F[B]

    coflatMap is the dual of flatMap on FlatMap.

    coflatMap is the dual of flatMap on FlatMap. It applies a value in a context to a function that takes a value in a context and returns a normal value.

    Example:

    scala> import cats.implicits._
    scala> import cats.CoflatMap
    scala> val fa = Some(3)
    scala> def f(a: Option[Int]): Int = a match {
         | case Some(x) => 2 * x
         | case None => 0 }
    scala> CoflatMap[Option].coflatMap(fa)(f)
    res0: Option[Int] = Some(6)
    Definition Classes
    CoflatMap
  2. abstract def extract[A](x: F[A]): A

    extract is the dual of pure on Monad (via Applicative) and extracts the value from its context

    extract is the dual of pure on Monad (via Applicative) and extracts the value from its context

    Example:

    scala> import cats.Id
    scala> import cats.Comonad
    scala> val id: Id[Int] = 3
    scala> Comonad[Id].extract(id)
    res0: cats.Id[Int] = 3
  3. abstract def map[A, B](fa: F[A])(f: (A) ⇒ B): F[B]
    Definition Classes
    Functor

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def as[A, B](fa: F[A], b: B): F[B]

    Replaces the A value in F[A] with the supplied value.

    Replaces the A value in F[A] with the supplied value.

    Definition Classes
    Functor
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def coflatten[A](fa: F[A]): F[F[A]]

    coflatten is the dual of flatten on FlatMap.

    coflatten is the dual of flatten on FlatMap. Whereas flatten removes a layer of F, coflatten adds a layer of F

    Example:

    scala> import cats.implicits._
    scala> import cats.CoflatMap
    scala> val fa = Some(3)
    fa: Option[Int] = Some(3)
    scala> CoflatMap[Option].coflatten(fa)
    res0: Option[Option[Int]] = Some(Some(3))
    Definition Classes
    CoflatMap
  8. def compose[G[_]](implicit arg0: Functor[G]): Functor[[α]F[G[α]]]
    Definition Classes
    Functor
  9. def compose[G[_]](implicit arg0: Invariant[G]): Invariant[[α]F[G[α]]]
    Definition Classes
    Invariant
  10. def composeContravariant[G[_]](implicit arg0: Contravariant[G]): Contravariant[[α]F[G[α]]]
    Definition Classes
    FunctorInvariant
  11. def composeFunctor[G[_]](implicit arg0: Functor[G]): Invariant[[α]F[G[α]]]
    Definition Classes
    Invariant
  12. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  14. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  15. def fproduct[A, B](fa: F[A])(f: (A) ⇒ B): F[(A, B)]

    Tuple the values in fa with the result of applying a function with the value

    Tuple the values in fa with the result of applying a function with the value

    Definition Classes
    Functor
  16. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  17. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  18. def imap[A, B](fa: F[A])(f: (A) ⇒ B)(g: (B) ⇒ A): F[B]
    Definition Classes
    FunctorInvariant
  19. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  20. def lift[A, B](f: (A) ⇒ B): (F[A]) ⇒ F[B]

    Lift a function f to operate on Functors

    Lift a function f to operate on Functors

    Definition Classes
    Functor
  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. final def notify(): Unit
    Definition Classes
    AnyRef
  23. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  24. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  25. def toString(): String
    Definition Classes
    AnyRef → Any
  26. def tupleLeft[A, B](fa: F[A], b: B): F[(B, A)]

    Tuples the A value in F[A] with the supplied B value, with the B value on the left.

    Tuples the A value in F[A] with the supplied B value, with the B value on the left.

    Definition Classes
    Functor
  27. def tupleRight[A, B](fa: F[A], b: B): F[(A, B)]

    Tuples the A value in F[A] with the supplied B value, with the B value on the right.

    Tuples the A value in F[A] with the supplied B value, with the B value on the right.

    Definition Classes
    Functor
  28. def void[A](fa: F[A]): F[Unit]

    Empty the fa of the values, preserving the structure

    Empty the fa of the values, preserving the structure

    Definition Classes
    Functor
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  32. def widen[A, B >: A](fa: F[A]): F[B]

    Lifts natural subtyping covariance of covariant Functors.

    Lifts natural subtyping covariance of covariant Functors.

    NOTE: In certain (perhaps contrived) situations that rely on universal equality this can result in a ClassCastException, because it is implemented as a type cast. It could be implemented as map(identity), but according to the functor laws, that should be equal to fa, and a type cast is often much more performant. See this example of widen creating a ClassCastException.

    Definition Classes
    Functor

Inherited from CoflatMap[F]

Inherited from Functor[F]

Inherited from Invariant[F]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped