adjunctions-4.2: Adjunctions and representable functors

PortabilityMPTCs, fundeps
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Control.Monad.Trans.Contravariant.Adjoint

Description

Uses a contravariant adjunction:

f -| g : Hask^op -> Hask

to build a Comonad to Monad transformer. Sadly, the dual construction, which builds a Comonad out of a Monad, is uninhabited, because any Adjunction of the form

 f -| g : Hask -> Hask^op

would trivially admit unsafePerformIO.

Documentation

runAdjoint :: Contravariant g => Adjoint f g a -> g (f a)Source

adjoint :: Contravariant g => g (f a) -> Adjoint f g aSource

newtype AdjointT f g w a Source

Constructors

AdjointT 

Fields

runAdjointT :: g (w (f a))
 

Instances

(Adjunction f g, Comonad w) => Monad (AdjointT f g w) 
(Adjunction f g, Functor w) => Functor (AdjointT f g w) 
(Adjunction f g, Comonad w) => Applicative (AdjointT f g w)