Safe Haskell | None |
---|---|
Language | Haskell2010 |
A symmetric version of the Kleisli monad transformer arrow.
This admits three isomorphic MonadBijection
types:
MonadArrow
(<->
) m a bBijection
(MonadFunction
m) a bm a
<->
m b
The Alimarine paper just calls it "MoT" for Monad Transformer.
- newtype MonadArrow a m b c = MonadArrow {
- runMonadArrow :: a (m b) (m c)
- type MonadFunction = MonadArrow (->)
- type MonadBijection m = MonadArrow (<->) m
- type MonadBijection' m = Bijection (MonadFunction m)
- type MonadBijection'' m a b = m a <-> m b
- monadBijection :: MonadBijection' m a b <-> MonadBijection m a b
- monadBijection' :: MonadBijection'' m a b <-> MonadBijection' m a b
Documentation
newtype MonadArrow a m b c Source #
Bidirectional Kleisli
-like monad arrow transformer.
MonadArrow | |
|
Category * a => Category * (MonadArrow a m) Source # | |
Groupoid * a => Groupoid * (MonadArrow a m) Source # | |
Semigroupoid * a => Semigroupoid * (MonadArrow a m) Source # | |
Monad m => Arrow (MonadArrow ((->) LiftedRep LiftedRep) m) Source # | |
Monad m => Arrow (MonadArrow (<->) m) Source # | |
MonadPlus m => ArrowZero (MonadArrow ((->) LiftedRep LiftedRep) m) Source # | |
MonadPlus m => ArrowZero (MonadArrow (<->) m) Source # | |
MonadPlus m => ArrowPlus (MonadArrow ((->) LiftedRep LiftedRep) m) Source # | |
MonadPlus m => ArrowPlus (MonadArrow (<->) m) Source # | |
Monad m => ArrowChoice (MonadArrow ((->) LiftedRep LiftedRep) m) Source # | |
Monad m => ArrowChoice (MonadArrow (<->) m) Source # | |
Monad m => BiArrow' (MonadArrow (<->) m) Source # | |
(BiArrow a, Monad m) => BiArrow (MonadArrow a m) Source # | |
type MonadFunction = MonadArrow (->) Source #
Specialization of MonadArrow
to function arrows.
type MonadBijection m = MonadArrow (<->) m Source #
type MonadBijection' m = Bijection (MonadFunction m) Source #
type MonadBijection'' m a b = m a <-> m b Source #
monadBijection :: MonadBijection' m a b <-> MonadBijection m a b Source #
Convert between isomorphic representations of MonadBijection
s.
monadBijection' :: MonadBijection'' m a b <-> MonadBijection' m a b Source #
Convert between isomorphic representations of MonadBijection
s.