io-sim-classes-0.2.0.0: Type classes for concurrency with STM, ST and timing
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Class.MonadSTM

Synopsis

Documentation

class (Monad m, MonadSTMTx (STM m)) => MonadSTM m where Source #

Minimal complete definition

atomically

Associated Types

type STM m :: Type -> Type Source #

Methods

atomically :: HasCallStack => STM m a -> m a Source #

newTVarIO :: a -> m (TVar m a) Source #

newTMVarIO :: a -> m (TMVar m a) Source #

newEmptyTMVarIO :: m (TMVar m a) Source #

newTBQueueIO :: Natural -> m (TBQueue m a) Source #

Instances

Instances details
MonadSTM IO Source # 
Instance details

Defined in Control.Monad.Class.MonadSTM

Associated Types

type STM IO :: Type -> Type Source #

MonadSTM m => MonadSTM (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Class.MonadSTM

Associated Types

type STM (ReaderT r m) :: Type -> Type Source #

Methods

atomically :: HasCallStack => STM (ReaderT r m) a -> ReaderT r m a Source #

newTVarIO :: a -> ReaderT r m (TVar (ReaderT r m) a) Source #

newTMVarIO :: a -> ReaderT r m (TMVar (ReaderT r m) a) Source #

newEmptyTMVarIO :: ReaderT r m (TMVar (ReaderT r m) a) Source #

newTBQueueIO :: Natural -> ReaderT r m (TBQueue (ReaderT r m) a) Source #

class (Monad stm, Alternative stm, MonadPlus stm) => MonadSTMTx stm where Source #

Associated Types

type TVar_ stm :: Type -> Type Source #

type TMVar_ stm :: Type -> Type Source #

type TQueue_ stm :: Type -> Type Source #

type TBQueue_ stm :: Type -> Type Source #

Methods

newTVar :: a -> stm (TVar_ stm a) Source #

readTVar :: TVar_ stm a -> stm a Source #

writeTVar :: TVar_ stm a -> a -> stm () Source #

retry :: stm a Source #

orElse :: stm a -> stm a -> stm a Source #

modifyTVar :: TVar_ stm a -> (a -> a) -> stm () Source #

modifyTVar' :: TVar_ stm a -> (a -> a) -> stm () Source #

stateTVar :: TVar_ stm s -> (s -> (a, s)) -> stm a Source #

@since io-sim-classes-0.2.0.0

check :: Bool -> stm () Source #

newTMVar :: a -> stm (TMVar_ stm a) Source #

newEmptyTMVar :: stm (TMVar_ stm a) Source #

takeTMVar :: TMVar_ stm a -> stm a Source #

tryTakeTMVar :: TMVar_ stm a -> stm (Maybe a) Source #

putTMVar :: TMVar_ stm a -> a -> stm () Source #

tryPutTMVar :: TMVar_ stm a -> a -> stm Bool Source #

readTMVar :: TMVar_ stm a -> stm a Source #

tryReadTMVar :: TMVar_ stm a -> stm (Maybe a) Source #

swapTMVar :: TMVar_ stm a -> a -> stm a Source #

isEmptyTMVar :: TMVar_ stm a -> stm Bool Source #

newTQueue :: stm (TQueue_ stm a) Source #

readTQueue :: TQueue_ stm a -> stm a Source #

tryReadTQueue :: TQueue_ stm a -> stm (Maybe a) Source #

writeTQueue :: TQueue_ stm a -> a -> stm () Source #

isEmptyTQueue :: TQueue_ stm a -> stm Bool Source #

newTBQueue :: Natural -> stm (TBQueue_ stm a) Source #

readTBQueue :: TBQueue_ stm a -> stm a Source #

tryReadTBQueue :: TBQueue_ stm a -> stm (Maybe a) Source #

flushTBQueue :: TBQueue_ stm a -> stm [a] Source #

writeTBQueue :: TBQueue_ stm a -> a -> stm () Source #

lengthTBQueue :: TBQueue_ stm a -> stm Natural Source #

Since: 0.2.0.0

isEmptyTBQueue :: TBQueue_ stm a -> stm Bool Source #

isFullTBQueue :: TBQueue_ stm a -> stm Bool Source #

Instances

Instances details
MonadSTMTx STM Source # 
Instance details

Defined in Control.Monad.Class.MonadSTM

Associated Types

type TVar_ STM :: Type -> Type Source #

type TMVar_ STM :: Type -> Type Source #

type TQueue_ STM :: Type -> Type Source #

type TBQueue_ STM :: Type -> Type Source #

Methods

newTVar :: a -> STM (TVar_ STM a) Source #

readTVar :: TVar_ STM a -> STM a Source #

writeTVar :: TVar_ STM a -> a -> STM () Source #

retry :: STM a Source #

orElse :: STM a -> STM a -> STM a Source #

modifyTVar :: TVar_ STM a -> (a -> a) -> STM () Source #

modifyTVar' :: TVar_ STM a -> (a -> a) -> STM () Source #

stateTVar :: TVar_ STM s -> (s -> (a, s)) -> STM a Source #

check :: Bool -> STM () Source #

newTMVar :: a -> STM (TMVar_ STM a) Source #

newEmptyTMVar :: STM (TMVar_ STM a) Source #

takeTMVar :: TMVar_ STM a -> STM a Source #

tryTakeTMVar :: TMVar_ STM a -> STM (Maybe a) Source #

putTMVar :: TMVar_ STM a -> a -> STM () Source #

tryPutTMVar :: TMVar_ STM a -> a -> STM Bool Source #

readTMVar :: TMVar_ STM a -> STM a Source #

tryReadTMVar :: TMVar_ STM a -> STM (Maybe a) Source #

swapTMVar :: TMVar_ STM a -> a -> STM a Source #

isEmptyTMVar :: TMVar_ STM a -> STM Bool Source #

newTQueue :: STM (TQueue_ STM a) Source #

readTQueue :: TQueue_ STM a -> STM a Source #

tryReadTQueue :: TQueue_ STM a -> STM (Maybe a) Source #

writeTQueue :: TQueue_ STM a -> a -> STM () Source #

isEmptyTQueue :: TQueue_ STM a -> STM Bool Source #

newTBQueue :: Natural -> STM (TBQueue_ STM a) Source #

readTBQueue :: TBQueue_ STM a -> STM a Source #

tryReadTBQueue :: TBQueue_ STM a -> STM (Maybe a) Source #

flushTBQueue :: TBQueue_ STM a -> STM [a] Source #

writeTBQueue :: TBQueue_ STM a -> a -> STM () Source #

lengthTBQueue :: TBQueue_ STM a -> STM Natural Source #

isEmptyTBQueue :: TBQueue_ STM a -> STM Bool Source #

isFullTBQueue :: TBQueue_ STM a -> STM Bool Source #

type LazyTVar m = TVar m Source #

Deprecated: Renamed back to TVar

type LazyTMVar m = TMVar m Source #

Deprecated: Renamed back to TMVar

type TVar m = TVar_ (STM m) Source #

type TMVar m = TMVar_ (STM m) Source #

type TQueue m = TQueue_ (STM m) Source #

type TBQueue m = TBQueue_ (STM m) Source #

Default TMVar implementation

newtype TMVarDefault m a Source #

Constructors

TMVar (TVar m (Maybe a)) 

putTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m () Source #

Default TBQueue implementation

data TQueueDefault m a Source #

Constructors

TQueue !(TVar m [a]) !(TVar m [a]) 

Default TBQueue implementation

data TBQueueDefault m a Source #

Constructors

TBQueue !(TVar m Natural) !(TVar m [a]) !(TVar m Natural) !(TVar m [a]) !Natural 

MonadThrow aliases

throwSTM :: (MonadSTMTx stm, MonadThrow stm, Exception e) => e -> stm a Source #

throwIO specialised to stm monad.

catchSTM :: (MonadSTMTx stm, MonadCatch stm, Exception e) => stm a -> (e -> stm a) -> stm a Source #

catch speclialized for an stm monad.

Deprecated API

newTVarM :: MonadSTM m => a -> m (TVar m a) Source #

Deprecated: Use newTVarIO

newTMVarM :: MonadSTM m => a -> m (TMVar m a) Source #

Deprecated: Use newTMVarIO

newTMVarMDefault :: MonadSTM m => a -> m (TMVarDefault m a) Source #

Deprecated: Use newTMVarIODefault

newEmptyTMVarM :: MonadSTM m => m (TMVar m a) Source #

Deprecated: Use newEmptyTMVarIO

newEmptyTMVarMDefault :: MonadSTM m => m (TMVarDefault m a) Source #

Deprecated: Use newEmptyTMVarIODefault