lifted-stm-0.1: src/Control/Concurrent/STM/TChan/Lifted.hs
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE FlexibleContexts #-}
-- | Lifted 'TChan' operations.
module Control.Concurrent.STM.TChan.Lifted
( TChan
, newTChan
, newTChanIO
, newBroadcastTChan
, newBroadcastTChanIO
, dupTChan
, cloneTChan
, readTChan
, tryReadTChan
, peekTChan
, tryPeekTChan
, writeTChan
, unGetTChan
, isEmptyTChan
) where
import Control.Monad.Base (MonadBase(..))
import Control.Monad.STM (STM)
import Control.Concurrent.STM.TChan (TChan)
import qualified Control.Concurrent.STM.TChan as STM
-- | A lifted version of 'STM.newTChan'.
newTChan ∷ MonadBase STM μ ⇒ μ (TChan α)
newTChan = liftBase STM.newTChan
{-# INLINE newTChan #-}
-- | A lifted version of 'STM.newTChanIO'.
newTChanIO ∷ MonadBase IO μ ⇒ μ (TChan α)
newTChanIO = liftBase STM.newTChanIO
{-# INLINE newTChanIO #-}
-- | A lifted version of 'STM.newBroadcastTChan'.
newBroadcastTChan ∷ MonadBase STM μ ⇒ μ (TChan α)
newBroadcastTChan = liftBase STM.newBroadcastTChan
{-# INLINE newBroadcastTChan #-}
-- | A lifted version of 'STM.newBroadcastTChanIO'.
newBroadcastTChanIO ∷ MonadBase IO μ ⇒ μ (TChan α)
newBroadcastTChanIO = liftBase STM.newBroadcastTChanIO
{-# INLINE newBroadcastTChanIO #-}
-- | A lifted version of 'STM.dupTChan'.
dupTChan ∷ MonadBase STM μ ⇒ TChan α → μ (TChan α)
dupTChan = liftBase . STM.dupTChan
{-# INLINE dupTChan #-}
-- | A lifted version of 'STM.cloneTChan'.
cloneTChan ∷ MonadBase STM μ ⇒ TChan α → μ (TChan α)
cloneTChan = liftBase . STM.cloneTChan
{-# INLINE cloneTChan #-}
-- | A lifted version of 'STM.readTChan'.
readTChan ∷ MonadBase STM μ ⇒ TChan α → μ α
readTChan = liftBase . STM.readTChan
{-# INLINE readTChan #-}
-- | A lifted version of 'STM.tryReadTChan'.
tryReadTChan ∷ MonadBase STM μ ⇒ TChan α → μ (Maybe α)
tryReadTChan = liftBase . STM.tryReadTChan
{-# INLINE tryReadTChan #-}
-- | A lifted version of 'STM.peekTChan'.
peekTChan ∷ MonadBase STM μ ⇒ TChan α → μ α
peekTChan = liftBase . STM.peekTChan
{-# INLINE peekTChan #-}
-- | A lifted version of 'STM.tryPeekTChan'.
tryPeekTChan ∷ MonadBase STM μ ⇒ TChan α → μ (Maybe α)
tryPeekTChan = liftBase . STM.tryPeekTChan
{-# INLINE tryPeekTChan #-}
-- | A lifted version of 'STM.writeTChan'.
writeTChan ∷ MonadBase STM μ ⇒ TChan α → α → μ ()
writeTChan = (liftBase .) . STM.writeTChan
{-# INLINE writeTChan #-}
-- | A lifted version of 'STM.unGetTChan'.
unGetTChan ∷ MonadBase STM μ ⇒ TChan α → α → μ ()
unGetTChan = (liftBase .) . STM.unGetTChan
{-# INLINE unGetTChan #-}
-- | A lifted version of 'STM.isEmptyTChan'.
isEmptyTChan ∷ MonadBase STM μ ⇒ TChan α → μ Bool
isEmptyTChan = liftBase . STM.isEmptyTChan
{-# INLINE isEmptyTChan #-}