From b7445582e31046e298517343f88d94c14ceb64a2 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 7 Nov 2021 01:29:40 +0100 Subject: [PATCH] Add tryReadAsyncVarSTM Co-authored-by: Jan Beinke <git@janbeinke.com> --- src/Quasar/Awaitable.hs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs index cfc58f6..424f67f 100644 --- a/src/Quasar/Awaitable.hs +++ b/src/Quasar/Awaitable.hs @@ -44,6 +44,7 @@ module Quasar.Awaitable ( failAsyncVarSTM_, putAsyncVarEitherSTM_, readAsyncVarSTM, + tryReadAsyncVarSTM, ) where import Control.Applicative (empty) @@ -365,6 +366,9 @@ putAsyncVarEitherSTM (AsyncVar var) = tryPutTMVar var readAsyncVarSTM :: AsyncVar a -> STM a readAsyncVarSTM (AsyncVar var) = either throwM pure =<< readTMVar var +tryReadAsyncVarSTM :: forall a. AsyncVar a -> STM (Maybe a) +tryReadAsyncVarSTM (AsyncVar var) = mapM (either throwM pure) =<< tryReadTMVar var + putAsyncVar :: MonadIO m => AsyncVar a -> a -> m Bool putAsyncVar var = putAsyncVarEither var . Right -- GitLab