functor-monad
Safe HaskellNone
LanguageHaskell2010

FMonad.Adjoint

Documentation

type Adjoint (ff :: k -> k2 -> Type) (uu :: (k2 -> Type) -> k1 -> Type) = AdjointT ff uu (IdentityT :: (k2 -> Type) -> k2 -> Type) Source #

adjoint :: forall (ff :: FF) (uu :: FF) (x :: Type -> Type). (FFunctor ff, FFunctor uu, Functor x) => uu (ff x) ~> Adjoint ff uu x Source #

runAdjoint :: forall (ff :: FF) (uu :: FF) (x :: Type -> Type). (FFunctor ff, FFunctor uu, Functor x) => Adjoint ff uu x ~> uu (ff x) Source #

newtype AdjointT (ff :: k -> k1) (uu :: k2 -> k3 -> Type) (mm :: k1 -> k2) (g :: k) (x :: k3) Source #

Constructors

AdjointT 

Fields

Instances

Instances details
(FFunctor ff, FFunctor mm, FFunctor uu) => FFunctor (AdjointT ff uu mm) Source # 
Instance details

Defined in FMonad.Adjoint

Methods

ffmap :: forall (g :: Type -> Type) (h :: Type -> Type) x. (Functor g, Functor h) => (g ~> h) -> AdjointT ff uu mm g x -> AdjointT ff uu mm h x Source #

(Adjunction ff uu, FMonad mm) => FMonad (AdjointT ff uu mm) Source # 
Instance details

Defined in FMonad.Adjoint

Methods

fpure :: forall (g :: Type -> Type). Functor g => g ~> AdjointT ff uu mm g Source #

fbind :: forall (g :: Type -> Type) (h :: Type -> Type) a. (Functor g, Functor h) => (g ~> AdjointT ff uu mm h) -> AdjointT ff uu mm g a -> AdjointT ff uu mm h a Source #

(FStrong ff, FStrong mm, FStrong uu) => FStrong (AdjointT ff uu mm) Source # 
Instance details

Defined in FMonad.Adjoint

Methods

fstrength :: forall (g :: Type -> Type) (h :: Type -> Type). Functor g => Day (AdjointT ff uu mm g) h ~> AdjointT ff uu mm (Day g h) Source #

mapCurried :: forall (g :: Type -> Type) (h :: Type -> Type). (Functor g, Functor h) => Curried g h ~> Curried (AdjointT ff uu mm g) (AdjointT ff uu mm h) Source #

(FFunctor ff, FFunctor mm, FFunctor uu, Functor g) => Functor (AdjointT ff uu mm g) Source # 
Instance details

Defined in FMonad.Adjoint

Methods

fmap :: (a -> b) -> AdjointT ff uu mm g a -> AdjointT ff uu mm g b #

(<$) :: a -> AdjointT ff uu mm g b -> AdjointT ff uu mm g a #

fffmap :: forall (mm :: FF) (nn :: FF) (ff :: FF) (uu :: FF) (x :: Type -> Type). (FFunctor mm, FFunctor nn, FFunctor ff, FFunctor uu, Functor x) => (forall (y :: Type -> Type). Functor y => mm y ~> nn y) -> AdjointT ff uu mm x ~> AdjointT ff uu nn x Source #

generalize :: forall (mm :: FF) (ff :: FF) (uu :: FF) (x :: Type -> Type). (FMonad mm, FFunctor ff, FFunctor uu, Functor x) => Adjoint ff uu x ~> AdjointT ff uu mm x Source #