Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
data EffMethods e (m :: * -> *) :: * Source #
type CanLift e (t :: (* -> *) -> * -> *) :: Constraint Source #
liftThrough :: forall t m. (CanLift e t, Monad m, Monad (t m)) => EffMethods e m -> EffMethods e (t m) Source #
liftThrough :: forall t m. (Generic (EffMethods e m), MonadTrans t, Monad m, Monad (t m), SimpleMethods (EffMethods e) m t) => EffMethods e m -> EffMethods e (t m) Source #
mergeContext :: Monad m => m (EffMethods e m) -> EffMethods e m Source #
mergeContext :: (Generic (EffMethods e m), MonadicMethods (EffMethods e) m) => m (EffMethods e m) -> EffMethods e m Source #
class (Effect e, Monad m) => MonadEffect e m where Source #
effect :: EffMethods e m Source #
effect :: (MonadEffect e m', Monad (t m'), CanLift e t, t m' ~ m) => EffMethods e m Source #
newtype RuntimeImplemented e m a Source #
RuntimeImplemented | |
|
implement :: forall e m a. EffMethods e m -> RuntimeImplemented e m a -> m a Source #
type family MonadEffects effs m :: Constraint where ... Source #
MonadEffects '[] m = () | |
MonadEffects (eff ': effs) m = (MonadEffect eff m, MonadEffects effs m) |