{-# 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 #-}