diff --git a/src/Quasar/Async.hs b/src/Quasar/Async.hs index b3efc4d078d4864fc0f098f51e3d3aed5e76b04b..3aa9c21557b7e2b3d9faec15f9d29e8759155638 100644 --- a/src/Quasar/Async.hs +++ b/src/Quasar/Async.hs @@ -25,7 +25,7 @@ import Quasar.Disposable import Quasar.Prelude -class (MonadAwait m, MonadResourceManager m, MonadCatch m) => MonadAsync m where +class (MonadAwait m, MonadResourceManager m, MonadMask m) => MonadAsync m where -- | TODO async :: m r -> m (Task r) async action = asyncWithUnmask ($ action) diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index 931a39b18fd4ce2742f79d867fef5b8cced2eef3..930fd6f07d78320358d5ff24d6b14e3f410e13c9 100644 --- a/src/Quasar/Awaitable.hs +++ b/src/Quasar/Awaitable.hs @@ -72,7 +72,7 @@ class IsAwaitable r a | a -> r where -class Monad m => MonadAwait m where +class (MonadCatch m, MonadPlus m) => MonadAwait m where await :: IsAwaitable r a => a -> m r instance MonadAwait IO where diff --git a/src/Quasar/Disposable.hs b/src/Quasar/Disposable.hs index 76e0f2858f2dd558e7567d5dba92d1504143f034..238c90ed2da8c9cd45099d668a8dc591110d3a93 100644 --- a/src/Quasar/Disposable.hs +++ b/src/Quasar/Disposable.hs @@ -210,10 +210,10 @@ class HasResourceManager a where instance HasResourceManager ResourceManager where getResourceManager = id -class MonadIO m => MonadResourceManager m where +class (MonadMask m, MonadIO m) => MonadResourceManager m where askResourceManager :: m ResourceManager -instance MonadIO m => MonadResourceManager (ReaderT ResourceManager m) where +instance (MonadMask m, MonadIO m) => MonadResourceManager (ReaderT ResourceManager m) where askResourceManager = ask