functor-monad-0.1.1.1: FFunctor: functors on (the usual) Functors
Safe HaskellSafe-Inferred
LanguageHaskell2010

FMonad.Adjoint

Documentation

type Adjoint ff uu = AdjointT ff uu IdentityT Source #

adjoint :: (FFunctor ff, FFunctor uu, Functor x) => uu (ff x) ~> Adjoint ff uu x Source #

runAdjoint :: (FFunctor ff, FFunctor uu, Functor x) => Adjoint ff uu x ~> uu (ff x) Source #

newtype AdjointT ff uu mm g x 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 nn ff uu x. (FFunctor mm, FFunctor nn, FFunctor ff, FFunctor uu, Functor x) => (forall y. Functor y => mm y ~> nn y) -> AdjointT ff uu mm x ~> AdjointT ff uu nn x Source #

generalize :: (FMonad mm, FFunctor ff, FFunctor uu, Functor x) => Adjoint ff uu x ~> AdjointT ff uu mm x Source #