ZapInstances

sealed abstract
class Object
trait Matchable
class Any
object Zap

Implicits

Implicits

implicit
def comonadMonadZap[F[_], G[_]](implicit d: Zap[F, G]): Zap[[_] =>> Cofree[F, _$21], [_] =>> Free[G, _$22]]

A cofree comonad and a free monad annihilate each other

A cofree comonad and a free monad annihilate each other

implicit
def coproductProductZap[F[_], FF[_], G[_], GG[_]](implicit d1: Zap[FF, F], d2: Zap[GG, G]): Zap[[α] =>> (FF[α], GG[α]), [α] =>> F[α] \/ G[α]]

The coproduct of two functors annihilates their product.

The coproduct of two functors annihilates their product.

implicit

The identity functor annihilates itself.

The identity functor annihilates itself.

implicit
def monadComonadZap[F[_], G[_]](implicit d: Zap[F, G]): Zap[[_] =>> Free[F, _$15], [_] =>> Cofree[G, _$16]]

A free monad and a cofree comonad annihilate each other

A free monad and a cofree comonad annihilate each other

implicit
def productCoproductZap[F[_], FF[_], G[_], GG[_]](implicit d1: Zap[F, FF], d2: Zap[G, GG]): Zap[[α] =>> F[α] \/ G[α], [α] =>> (FF[α], GG[α])]

The product of two functors annihilates their coproduct.

The product of two functors annihilates their coproduct.