diff --git a/src/Quasar/ResourceManager.hs b/src/Quasar/ResourceManager.hs index 967ff0a6502ad31da466d6b50022ea52ece4ac63..d455e73479f0e80c415a55874fc37db830229773 100644 --- a/src/Quasar/ResourceManager.hs +++ b/src/Quasar/ResourceManager.hs @@ -93,7 +93,7 @@ instance IsResourceManager ResourceManager where -- TODO delegate to parent throwToResourceManager _ ex = hPutStrLn stderr $ displayException ex -class (MonadAwait m, MonadMask m, MonadIO m) => MonadResourceManager m where +class (MonadAwait m, MonadMask m, MonadIO m, MonadFix m) => MonadResourceManager m where -- | Get the underlying resource manager. askResourceManager :: m ResourceManager @@ -116,7 +116,7 @@ withSubResourceManagerM action = bracket newResourceManager (await <=< dispose) \scope -> localResourceManager scope action -instance (MonadAwait m, MonadMask m, MonadIO m) => MonadResourceManager (ReaderT ResourceManager m) where +instance (MonadAwait m, MonadMask m, MonadIO m, MonadFix m) => MonadResourceManager (ReaderT ResourceManager m) where localResourceManager resourceManager = local (const (toResourceManager resourceManager)) askResourceManager = ask