simple-effects 0.10.0.1 → 0.10.0.2
raw patch · 2 files changed
+10/−10 lines, 2 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Control.Effects: instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Control.Effects.RuntimeImplemented e m)
Files
- simple-effects.cabal +1/−1
- src/Control/Effects.hs +9/−9
simple-effects.cabal view
@@ -1,5 +1,5 @@ name: simple-effects -version: 0.10.0.1 +version: 0.10.0.2 synopsis: A simple effect system that integrates with MTL description: Please see the tutorial modules homepage: https://gitlab.com/LukaHorvat/simple-effects
src/Control/Effects.hs view
@@ -19,15 +19,15 @@ forall t m. (CanLift e t, Monad m, Monad (t m)) => EffMethods e m -> EffMethods e (t m) default liftThrough :: - forall t m. + 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) liftThrough = genericLiftThrough - + mergeContext :: Monad m => m (EffMethods e m) -> EffMethods e m - default mergeContext :: - (Generic (EffMethods e m), MonadicMethods (EffMethods e) m) + default mergeContext :: + (Generic (EffMethods e m), MonadicMethods (EffMethods e) m) => m (EffMethods e m) -> EffMethods e m mergeContext = genericMergeContext @@ -39,11 +39,11 @@ => MonadEffect e (t m) where effect = liftThrough effect -newtype RuntimeImplemented e m a = RuntimeImplemented +newtype RuntimeImplemented e m a = RuntimeImplemented { getRuntimeImplemented :: ReaderT (EffMethods e m) m a } - deriving - (Functor, Applicative, Monad, MonadPlus, Alternative, MonadState s, MonadIO, MonadCatch - , MonadThrow, MonadRandom ) + deriving + ( Functor, Applicative, Monad, MonadPlus, Alternative, MonadState s, MonadIO, MonadCatch + , MonadThrow, MonadRandom, MonadMask ) instance MonadTrans (RuntimeImplemented e) where lift = RuntimeImplemented . lift @@ -65,7 +65,7 @@ restoreTransState = return runTransformer (RuntimeImplemented m) = runReaderT m -instance (Effect e, Monad m, CanLift e (RuntimeImplemented e)) +instance (Effect e, Monad m, CanLift e (RuntimeImplemented e)) => MonadEffect e (RuntimeImplemented e m) where effect = mergeContext $ RuntimeImplemented (liftThrough <$> ask)