Copyright | (C) 2011 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 |
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 a Source #
newtype AdjointT f g w a Source #
AdjointT | |
|
Instances
( Adjunction f g, Comonad w) => Monad ( AdjointT f g w) Source # | |
( Adjunction f g, Functor w) => Functor ( AdjointT f g w) Source # | |
( Adjunction f g, Comonad w) => Applicative ( AdjointT f g w) Source # | |
Defined in Control.Monad.Trans.Contravariant.Adjoint pure :: a -> AdjointT f g w a Source # (<*>) :: AdjointT f g w (a -> b) -> AdjointT f g w a -> AdjointT f g w b Source # liftA2 :: (a -> b -> c) -> AdjointT f g w a -> AdjointT f g w b -> AdjointT f g w c Source # (*>) :: AdjointT f g w a -> AdjointT f g w b -> AdjointT f g w b Source # (<*) :: AdjointT f g w a -> AdjointT f g w b -> AdjointT f g w a Source # |