MonadPartialOrder

trait MonadPartialOrder[F[_], G[_]] extends FunctionK[F, G]

Encapsulates the notion of a monad, G, which contains all of the effects of some other monad, F. This means that any effect of type F[A] can be lifted to G[A], such that both F and G form monads and the lifting distributes over flatMap and pure.

Encapsulates the notion of a monad, G, which contains all of the effects of some other monad, F. This means that any effect of type F[A] can be lifted to G[A], such that both F and G form monads and the lifting distributes over flatMap and pure.

Original idea by Kris Nuttycombe.

Companion
object
trait FunctionK[F, G]
trait Serializable
class Object
trait Matchable
class Any

Value members

Abstract methods

def monadF: Monad[F]
def monadG: Monad[G]

Inherited methods

def and[H[_]](h: FunctionK[F, H]): FunctionK[F, [_] =>> Tuple2K[G, H, _$9]]

Composes two instances of FunctionK into a new FunctionK that transforms one single functor to a cats.data.Tuple2K of two functors.

Composes two instances of FunctionK into a new FunctionK that transforms one single functor to a cats.data.Tuple2K of two functors.

scala> import cats.arrow.FunctionK
scala> val list2option = λ[FunctionK[List, Option]](_.headOption)
scala> val list2vector = λ[FunctionK[List, Vector]](_.toVector)
scala> val optionAndVector = list2option and list2vector
scala> optionAndVector(List(1,2,3))
res0: cats.data.Tuple2K[Option,Vector,Int] = Tuple2K(Some(1),Vector(1, 2, 3))
Inherited from
FunctionK
def andThen[H[_]](f: FunctionK[G, H]): FunctionK[F, H]

Composes two instances of FunctionK into a new FunctionK with this transformation applied first.

Composes two instances of FunctionK into a new FunctionK with this transformation applied first.

Inherited from
FunctionK
def apply[A](fa: F[A]): G[A]

Applies this functor transformation from F to G

Applies this functor transformation from F to G

Inherited from
FunctionK
def compose[E[_]](f: FunctionK[E, F]): FunctionK[E, G]

Composes two instances of FunctionK into a new FunctionK with this transformation applied last.

Composes two instances of FunctionK into a new FunctionK with this transformation applied last.

Inherited from
FunctionK
def narrow[F0 <: ([x] =>> F[x])]: FunctionK[F0, G]

Narrows the input type of this FunctionK from F to F0

Narrows the input type of this FunctionK from F to F0

Inherited from
FunctionK
def or[H[_]](h: FunctionK[H, G]): FunctionK[[_] =>> EitherK[F, H, _$6], G]

Composes two instances of FunctionK into a new FunctionK that transforms a cats.data.EitherK to a single functor.

Composes two instances of FunctionK into a new FunctionK that transforms a cats.data.EitherK to a single functor.

This transformation will be used to transform left F values while h will be used to transform right H values.

Inherited from
FunctionK
def widen[G0[x]]: FunctionK[F, G0]

Widens the output type of this FunctionK from G to G0

Widens the output type of this FunctionK from G to G0

Inherited from
FunctionK