| 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(MonadFunctionm) 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 MonadBijections.
monadBijection' :: MonadBijection'' m a b <-> MonadBijection' m a b Source #
Convert between isomorphic representations of MonadBijections.