diff --git a/src/Quasar/Async.hs b/src/Quasar/Async.hs index adfc85f37467ceb8f29308514a38203c59cd568a..1457f4d21dca3cb356a22179bcb76c9225ce0ea9 100644 --- a/src/Quasar/Async.hs +++ b/src/Quasar/Async.hs @@ -21,7 +21,7 @@ import Quasar.Disposable import Quasar.Prelude -class (MonadAwait m, MonadResourceManager m) => MonadAsync m where +class MonadResourceManager m => MonadAsync m where async :: m r -> m (Awaitable r) async action = asyncWithUnmask ($ action) diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs index cdf49ab5f651c6102d09ba1bf3dd3beb11c13f47..7cbb126990fd6d8b6fe2a818993d7709c2fa40d0 100644 --- a/src/Quasar/Observable.hs +++ b/src/Quasar/Observable.hs @@ -74,7 +74,7 @@ toObservableUpdate (ObservableNotAvailable ex) = throwM ex class IsRetrievable v a | a -> v where - retrieve :: (MonadResourceManager m, MonadAwait m) => a -> m (Awaitable v) + retrieve :: MonadResourceManager m => a -> m (Awaitable v) retrieveIO :: IsRetrievable v a => a -> IO v retrieveIO x = withOnResourceManager $ await =<< retrieve x @@ -436,7 +436,7 @@ mergeObservable :: (IsObservable v0 o0, IsObservable v1 o1) => (v0 -> v1 -> r) - mergeObservable merge x y = Observable $ MergedObservable merge x y data FnObservable v = FnObservable { - retrieveFn :: forall m. (MonadResourceManager m, MonadAwait m) => m (Awaitable v), + retrieveFn :: forall m. MonadResourceManager m => m (Awaitable v), observeFn :: (ObservableMessage v -> IO ()) -> IO Disposable } instance IsRetrievable v (FnObservable v) where @@ -451,7 +451,7 @@ instance IsObservable v (FnObservable v) where -- | Implement an Observable by directly providing functions for `retrieve` and `subscribe`. fnObservable :: ((ObservableMessage v -> IO ()) -> IO Disposable) - -> (forall m. (MonadResourceManager m, MonadAwait m) => m (Awaitable v)) + -> (forall m. MonadResourceManager m => m (Awaitable v)) -> Observable v fnObservable observeFn retrieveFn = toObservable FnObservable{observeFn, retrieveFn}