diff --git a/src/Quasar/Monad.hs b/src/Quasar/Monad.hs index 2f140bca685f2d182f95593fab55d67518e0bbdb..81e8a005d04afed85dd61397f18d5635c160b3af 100644 --- a/src/Quasar/Monad.hs +++ b/src/Quasar/Monad.hs @@ -2,6 +2,7 @@ module Quasar.Monad ( -- * Quasar Quasar, newQuasar, + withResourceScope, MonadQuasar(..), @@ -94,7 +95,9 @@ newQuasar = do ensureSTM $ newQuasarSTM worker exChan parentRM ---withResourceScope :: MonadQuasar m => m a -> m a +withResourceScope :: (MonadQuasar m, MonadIO m, MonadMask m) => m a -> m a +withResourceScope fn = bracket newQuasar dispose (`localQuasar` fn) + class (MonadCatch m, MonadFix m) => MonadQuasar m where