Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Control.Invertible.MonadArrow
Description
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.
Synopsis
- newtype MonadArrow (a :: Type -> Type -> Type) (m :: Type -> Type) b c = MonadArrow {
- runMonadArrow :: a (m b) (m c)
- type MonadFunction = MonadArrow (->)
- type MonadBijection (m :: Type -> Type) = MonadArrow (<->) m
- type MonadBijection' (m :: Type -> Type) = Bijection (MonadFunction m)
- type MonadBijection'' (m :: Type -> Type) a b = m a <-> m b
- monadBijection :: forall (m :: Type -> Type) a b. MonadBijection' m a b <-> MonadBijection m a b
- monadBijection' :: MonadBijection'' m a b <-> MonadBijection' m a b
Documentation
newtype MonadArrow (a :: Type -> Type -> Type) (m :: Type -> Type) b c Source #
Bidirectional Kleisli
-like monad arrow transformer.
Constructors
MonadArrow | |
Fields
|
Instances
type MonadFunction = MonadArrow (->) Source #
Specialization of MonadArrow
to function arrows.
type MonadBijection (m :: Type -> Type) = MonadArrow (<->) m Source #
type MonadBijection' (m :: Type -> Type) = Bijection (MonadFunction m) Source #
monadBijection :: forall (m :: Type -> Type) a b. 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.