hsfm/src/IO/Utils.hs

37 lines
597 B
Haskell
Raw Normal View History

2015-12-17 03:42:22 +00:00
{-# OPTIONS_HADDOCK ignore-exports #-}
module IO.Utils where
import Control.Concurrent.STM
(
atomically
)
import Control.Concurrent.STM.TVar
(
writeTVar
, modifyTVar
, TVar
)
import Control.Monad
(
when
2015-12-18 14:37:14 +00:00
, unless
)
2015-12-17 03:42:22 +00:00
writeTVarIO :: TVar a -> a -> IO ()
writeTVarIO tvar val = atomically $ writeTVar tvar val
modifyTVarIO :: TVar a -> (a -> a) -> IO ()
modifyTVarIO tvar f = atomically $ modifyTVar tvar f
whenM :: Monad m => m Bool -> m () -> m ()
whenM mb a = mb >>= (`when` a)
2015-12-18 14:37:14 +00:00
unlessM :: Monad m => m Bool -> m () -> m ()
unlessM mb a = mb >>= (`unless` a)