lifted-stm-0.1: src/Control/Concurrent/STM/TVar/Lifted.hs
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE FlexibleContexts #-}
-- | Lifted 'STM.TVar' operations.
module Control.Concurrent.STM.TVar.Lifted
( TVar
, newTVar
, newTVarIO
, readTVar
, readTVarIO
, writeTVar
, modifyTVar
, modifyTVar'
, swapTVar
, registerDelay
, mkWeakTVar
) where
import Control.Monad.Base (MonadBase(..))
import Control.Monad.STM (STM)
import Control.Concurrent.STM.TVar (TVar)
import qualified Control.Concurrent.STM.TVar as STM
import System.Mem.Weak (Weak)
-- | A lifted version of 'STM.newTVar'.
newTVar ∷ MonadBase STM μ ⇒ α → μ (TVar α)
newTVar = liftBase . STM.newTVar
{-# INLINE newTVar #-}
-- | A lifted version of 'STM.newTVarIO'.
newTVarIO ∷ MonadBase IO μ ⇒ α → μ (TVar α)
newTVarIO = liftBase . STM.newTVarIO
{-# INLINE newTVarIO #-}
-- | A lifted version of 'STM.readTVar'.
readTVar ∷ MonadBase STM μ ⇒ TVar α → μ α
readTVar = liftBase . STM.readTVar
{-# INLINE readTVar #-}
-- | A lifted version of 'STM.readTVarIO'.
readTVarIO ∷ MonadBase IO μ ⇒ TVar α → μ α
readTVarIO = liftBase . STM.readTVarIO
{-# INLINE readTVarIO #-}
-- | A lifted version of 'STM.writeTVar'.
writeTVar ∷ MonadBase STM μ ⇒ TVar α → α → μ ()
writeTVar = (liftBase .) . STM.writeTVar
{-# INLINE writeTVar #-}
-- | A lifted version of 'STM.modifyTVar'.
modifyTVar ∷ MonadBase STM μ ⇒ TVar α → (α → α) → μ ()
modifyTVar = (liftBase .) . STM.modifyTVar
{-# INLINE modifyTVar #-}
-- | A lifted version of 'STM.modifyTVar''.
modifyTVar' ∷ MonadBase STM μ ⇒ TVar α → (α → α) → μ ()
modifyTVar' = (liftBase .) . STM.modifyTVar'
{-# INLINE modifyTVar' #-}
-- | A lifted version of 'STM.swapTVar'.
swapTVar ∷ MonadBase STM μ ⇒ TVar α → α → μ α
swapTVar = (liftBase .) . STM.swapTVar
{-# INLINE swapTVar #-}
-- | A lifted version of 'STM.registerDelay'.
registerDelay ∷ MonadBase IO μ ⇒ Int → μ (TVar Bool)
registerDelay = liftBase . STM.registerDelay
{-# INLINE registerDelay #-}
-- | A lifted version of 'STM.mkWeakTVar'.
mkWeakTVar ∷ MonadBase IO μ ⇒ TVar α → IO () → μ (Weak (TVar α))
mkWeakTVar = (liftBase .) . STM.mkWeakTVar
{-# INLINE mkWeakTVar #-}