bifunctors-5.5.9: Bifunctors

Data.Bifunctor.Functor

Synopsis

# Documentation

type (:->) p q = forall a b. p a b -> q a b infixr 0 Source #

Using parametricity as an approximation of a natural transformation in two arguments.

class BifunctorFunctor t where Source #

Methods

bifmap :: (p :-> q) -> t p :-> t q Source #

#### Instances

Instances details
 BifunctorFunctor (Flip :: (k1 -> k2 -> Type) -> k2 -> k1 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Flip Methodsbifmap :: forall (p :: k -> k -> Type) (q :: k -> k -> Type). (p :-> q) -> Flip p :-> Flip q Source # BifunctorFunctor (Product p :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Product Methodsbifmap :: forall (p0 :: k -> k -> Type) (q :: k -> k -> Type). (p0 :-> q) -> Product p p0 :-> Product p q Source # BifunctorFunctor (Sum p :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Sum Methodsbifmap :: forall (p0 :: k -> k -> Type) (q :: k -> k -> Type). (p0 :-> q) -> Sum p p0 :-> Sum p q Source # Functor f => BifunctorFunctor (Tannen f :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Tannen Methodsbifmap :: forall (p :: k -> k -> Type) (q :: k -> k -> Type). (p :-> q) -> Tannen f p :-> Tannen f q Source #

class BifunctorFunctor t => BifunctorMonad t where Source #

Minimal complete definition

bireturn, (bibind | bijoin)

Methods

bireturn :: p :-> t p Source #

bibind :: (p :-> t q) -> t p :-> t q Source #

bijoin :: t (t p) :-> t p Source #

#### Instances

Instances details
 BifunctorMonad (Sum p :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Sum Methodsbireturn :: forall (p0 :: k -> k -> Type). p0 :-> Sum p p0 Source #bibind :: forall (p0 :: k -> k -> Type) (q :: k -> k -> Type). (p0 :-> Sum p q) -> Sum p p0 :-> Sum p q Source #bijoin :: forall (p0 :: k -> k -> Type). Sum p (Sum p p0) :-> Sum p p0 Source # (Functor f, Monad f) => BifunctorMonad (Tannen f :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Tannen Methodsbireturn :: forall (p :: k -> k -> Type). p :-> Tannen f p Source #bibind :: forall (p :: k -> k -> Type) (q :: k -> k -> Type). (p :-> Tannen f q) -> Tannen f p :-> Tannen f q Source #bijoin :: forall (p :: k -> k -> Type). Tannen f (Tannen f p) :-> Tannen f p Source #

biliftM :: BifunctorMonad t => (p :-> q) -> t p :-> t q Source #

class BifunctorFunctor t => BifunctorComonad t where Source #

Minimal complete definition

Methods

biextract :: t p :-> p Source #

biextend :: (t p :-> q) -> t p :-> t q Source #

biduplicate :: t p :-> t (t p) Source #

#### Instances

Instances details
 BifunctorComonad (Product p :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Product Methodsbiextract :: forall (p0 :: k -> k -> Type). Product p p0 :-> p0 Source #biextend :: forall (p0 :: k -> k -> Type) (q :: k -> k -> Type). (Product p p0 :-> q) -> Product p p0 :-> Product p q Source #biduplicate :: forall (p0 :: k -> k -> Type). Product p p0 :-> Product p (Product p p0) Source # Comonad f => BifunctorComonad (Tannen f :: (k1 -> k2 -> Type) -> k1 -> k2 -> Type) Source # Instance detailsDefined in Data.Bifunctor.Tannen Methodsbiextract :: forall (p :: k -> k -> Type). Tannen f p :-> p Source #biextend :: forall (p :: k -> k -> Type) (q :: k -> k -> Type). (Tannen f p :-> q) -> Tannen f p :-> Tannen f q Source #biduplicate :: forall (p :: k -> k -> Type). Tannen f p :-> Tannen f (Tannen f p) Source #

biliftW :: BifunctorComonad t => (p :-> q) -> t p :-> t q Source #