summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Utility/Monad.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/Utility/Monad.hs b/Utility/Monad.hs
index 0d1675fa4..9e2a16e8c 100644
--- a/Utility/Monad.hs
+++ b/Utility/Monad.hs
@@ -28,3 +28,11 @@ anyM p = liftM isJust . firstM p
{- Runs an action on values from a list until it succeeds. -}
untilTrue :: (Monad m) => [a] -> (a -> m Bool) -> m Bool
untilTrue = flip anyM
+
+{- Runs a monadic action, passing its value to an observer
+ - before returning it. -}
+observe :: (Monad m) => (a -> m b) -> m a -> m a
+observe observer a = do
+ r <- a
+ _ <- observer r
+ return r