Module

Control.Monad.Morph

A port of Haskell's mmorph library

#MFunctor

#generalize

generalize :: forall m a. Monad m => Identity a -> m a

#MMonad

class MMonad :: ((Type -> Type) -> Type -> Type) -> Constraintclass (MFunctor t, MonadTrans t) <= MMonad t  where

Members

  • embed :: forall n m b. Monad n => (forall a. m a -> t n a) -> t m b -> t n b

Instances

#squash

squash :: forall m t. Monad m => MMonad t => (t (t m)) ~> (t m)

#(>|>)

Operator alias for Control.Monad.Morph.composeKleisliRight (right-associative / precedence 2)

#(<|<)

Operator alias for Control.Monad.Morph.composeKleisliLeft (left-associative / precedence 2)

#(=<|)

Operator alias for Control.Monad.Morph.embed (right-associative / precedence 2)

#(|>=)

Operator alias for Control.Monad.Morph.flipEmbed (left-associative / precedence 2)

#composeKleisliRight

composeKleisliRight :: forall m1 m2 m3 t. MMonad t => Monad m3 => m1 ~> (t m2) -> m2 ~> (t m3) -> m1 ~> (t m3)

#composeKleisliLeft

composeKleisliLeft :: forall m1 m2 m3 t. MMonad t => Monad m3 => m2 ~> (t m3) -> m1 ~> (t m2) -> m1 ~> (t m3)

#flipEmbed

flipEmbed :: forall t m n a. MMonad t => Monad n => t m a -> m ~> (t n) -> t n a

Modules