on master help sign in
Add a "discard" function

Just like "void" but also discards exceptions.

commitba6a1e769cd16024af1abebc6a412aa80ab595f2 authorHarendra Kumar <harendra.kumar@gmail.com> dateThu 28 Nov 2019, 07:38 (7 years ago) parent0d737d1
2 files changed+28
src/Streamly/Internal/Control/Monad.hs+27 streamly.cabal+1
src/Streamly/Internal/Control/Monad.hsnew file+27
@@ -0,0 +1,27 @@
1+-- |
2+-- Module : Streamly.Internal.Control.Monad
3+-- Copyright : (c) 2019 Composewell Technologies
4+--
5+-- License : BSD3
6+-- Maintainer : streamly@composewell.com
7+-- Stability : experimental
8+-- Portability : GHC
9+--
10+-- Additional "Control.Monad" utilities.
11+
12+{-# LANGUAGE ScopedTypeVariables #-}
13+
14+module Streamly.Internal.Control.Monad
15+ ( discard
16+ )
17+where
18+
19+import Control.Monad (void)
20+import Control.Monad.Catch (MonadCatch, catch, SomeException)
21+
22+-- | Discard any exceptions or value returned by an effectful action.
23+--
24+-- /Internal/
25+--
26+discard :: MonadCatch m => m b -> m ()
27+discard action = (void $ action) `catch` (\(_ :: SomeException) -> return ())
streamly.cabal+1
@@ -312,6 +312,7 @@ library
312312 , Streamly.Tutorial
313313
314314 -- Internal modules
315+ , Streamly.Internal.Control.Monad
315316 , Streamly.Internal.Data.Strict
316317 , Streamly.Internal.Data.Atomics
317318 , Streamly.Internal.Data.Time