Control.Monad.Trans.Adjoint

adjunctions-4.4.2: Adjunctions and representable functors

Copyright | (C) 2011-2013 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | provisional
Portability | MPTCs, fundeps
Safe Haskell | Safe-Inferred
Language | Haskell2010

Control.Monad.Trans.Adjoint

Description

# Documentation

type Adjoint (f :: Type -> Type) (g :: Type -> Type) = AdjointT f g Identity #

runAdjoint :: Functor g => Adjoint f g a -> g (f a) #

adjoint :: Functor g => g (f a) -> Adjoint f g a #

newtype AdjointT (f :: Type -> Type) (g :: Type -> Type) (m :: Type -> Type) a #

Constructors

AdjointT |
Fields runAdjointT :: g (m (f a))

#### Instances

Instances details

(Adjunction f g, Traversable f) => MonadTrans (AdjointT f g) # | Exploiting this instance requires that we have the missing Traversables for Identity, (,)e and IdentityT
Instance details Defined in Control.Monad.Trans.Adjoint Methods lift :: Monad m => m a -> AdjointT f g m a #
(Adjunction f g, Monad m) => Applicative (AdjointT f g m) # |
Instance details Defined in Control.Monad.Trans.Adjoint Methods pure :: a -> AdjointT f g m a # (<*>) :: AdjointT f g m (a -> b) -> AdjointT f g m a -> AdjointT f g m b # liftA2 :: (a -> b -> c) -> AdjointT f g m a -> AdjointT f g m b -> AdjointT f g m c # (*>) :: AdjointT f g m a -> AdjointT f g m b -> AdjointT f g m b # (<*) :: AdjointT f g m a -> AdjointT f g m b -> AdjointT f g m a #
(Adjunction f g, Monad m) => Functor (AdjointT f g m) # |
Instance details Defined in Control.Monad.Trans.Adjoint Methods fmap :: (a -> b) -> AdjointT f g m a -> AdjointT f g m b # (<$) :: a -> AdjointT f g m b -> AdjointT f g m a #
(Adjunction f g, Monad m) => Monad (AdjointT f g m) # |
Instance details Defined in Control.Monad.Trans.Adjoint Methods (>>=) :: AdjointT f g m a -> (a -> AdjointT f g m b) -> AdjointT f g m b # (>>) :: AdjointT f g m a -> AdjointT f g m b -> AdjointT f g m b # return :: a -> AdjointT f g m a #