functor-monad
Safe HaskellNone
LanguageHaskell2010

FComonad.Adjoint

Documentation

type Adjoint (ff :: (k2 -> Type) -> k1 -> Type) (uu :: k -> k2 -> 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) => ff (uu 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 ~> ff (uu x) Source #

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

Constructors

AdjointT 

Fields

Instances

Instances details
(Adjunction ff uu, FComonad ww) => FComonad (AdjointT ff uu ww) Source # 
Instance details

Defined in FComonad.Adjoint

Methods

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

fextend :: forall (g :: Type -> Type) (h :: Type -> Type). (Functor g, Functor h) => (AdjointT ff uu ww g ~> h) -> AdjointT ff uu ww g ~> AdjointT ff uu ww h Source #

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

Defined in FComonad.Adjoint

Methods

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

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

Defined in FComonad.Adjoint

Methods

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

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

Functor (ff (ww (uu g))) => Functor (AdjointT ff uu ww g) Source # 
Instance details

Defined in FComonad.Adjoint

Methods

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

(<$) :: a -> AdjointT ff uu ww g b -> AdjointT ff uu ww 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 #

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