0 | module Control.Effect.Lift
2 | import Control.EffectAlgebra
6 | [Lift] Monad m => Algebra (Lift m) m where
7 | alg ctxx hdl (MkLift x) = x >>= hdl . ( <$ ctxx)
10 | HintLift : Monad m => Algebra (Lift m) m
15 | lift : Monad n => Inj (Lift n) sig => Algebra sig m => n a -> m a
16 | lift x = send {eff = Lift n} $
MkLift (map pure x)