From 320c54bfab879e0643d8bb2a9d2a8fe89fd0e0f2 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 29 Aug 2021 01:34:45 +0200 Subject: [PATCH] Add MonadAwait instance to Awaitable --- src/Quasar/Awaitable.hs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index 15399c4..709462d 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 -- GitLab