diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index 15399c4c95d219072d1420b1eeaf092a6f1d4cfb..709462dd0afd82464b3d6a743431e1b132f1a20d 100644 --- a/src/Quasar/Awaitable.hs +++ b/src/Quasar/Awaitable.hs @@ -103,11 +103,14 @@ instance IsAwaitable r (Awaitable r) where cacheAwaitable (Awaitable x) = cacheAwaitable x toAwaitable = id +instance MonadAwait Awaitable where + await = toAwaitable + instance Functor Awaitable where fmap fn (Awaitable x) = fnAwaitable $ fn <$> runAwaitable x instance Applicative Awaitable where - pure value = fnAwaitable $ pure value + pure = successfulAwaitable liftA2 fn (Awaitable fx) (Awaitable fy) = fnAwaitable $ liftA2 fn (runAwaitable fx) (runAwaitable fy) instance Monad Awaitable where @@ -158,6 +161,7 @@ instance IsAwaitable r (CompletedAwaitable r) where completedAwaitable :: Either SomeException r -> Awaitable r completedAwaitable result = toAwaitable $ CompletedAwaitable result +-- | Alias for `pure`. successfulAwaitable :: r -> Awaitable r successfulAwaitable = completedAwaitable . Right