Monad transformers #
Taken from Zulip thread.
The MonadTransformer
typeclass only contains the operations of a monad transformer.
LawfulMonadTransformer
also asserts these operations satisfy the laws of a monad transformer:
liftOf m (pure x) = pure x
liftOf m (x >>= f) = liftOf m x >>= liftOf m ∘ f
Instances
class
MonadTransformer.IsCovariant
(t : (Type u → Type v) → Type u → Type w)
[MonadTransformer t]
:
Type (max (max (u + 1) (v + 1)) w)
A monad transformer is covariant if it lifts monad morphisms to monad morphisms.
Instances
instance
MonadTransformer.instLawfulMonadLiftOfLawfulMonadOfLawfulMonadTransformer
{t : (Type u → Type v) → Type u → Type w}
{m : Type u → Type v}
[MonadTransformer t]
[Monad m]
[LawfulMonad m]
[LawfulMonadTransformer t]
:
LawfulMonadLift m (t m)