Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Control.Monad.Class.MonadSTM.Strict
Synopsis
- data TBQueueDefault m a = TBQueue !(TVar m Natural) !(TVar m [a]) !(TVar m Natural) !(TVar m [a]) !Natural
- data TQueueDefault m a = TQueue !(TVar m [a]) !(TVar m [a])
- data TMVarDefault m a
- class (Monad m, MonadSTMTx (STM m)) => MonadSTM m where
- type STM m :: Type -> Type
- atomically :: HasCallStack => STM m a -> m a
- newTBQueueIO :: Natural -> m (TBQueue m a)
- type TBQueue m = TBQueue_ (STM m)
- type TQueue m = TQueue_ (STM m)
- class (Monad stm, Alternative stm, MonadPlus stm) => MonadSTMTx stm where
- type TVar_ stm :: Type -> Type
- type TMVar_ stm :: Type -> Type
- type TQueue_ stm :: Type -> Type
- type TBQueue_ stm :: Type -> Type
- retry :: stm a
- orElse :: stm a -> stm a -> stm a
- modifyTVar' :: TVar_ stm a -> (a -> a) -> stm ()
- check :: Bool -> stm ()
- newTQueue :: stm (TQueue_ stm a)
- readTQueue :: TQueue_ stm a -> stm a
- tryReadTQueue :: TQueue_ stm a -> stm (Maybe a)
- writeTQueue :: TQueue_ stm a -> a -> stm ()
- isEmptyTQueue :: TQueue_ stm a -> stm Bool
- newTBQueue :: Natural -> stm (TBQueue_ stm a)
- readTBQueue :: TBQueue_ stm a -> stm a
- tryReadTBQueue :: TBQueue_ stm a -> stm (Maybe a)
- flushTBQueue :: TBQueue_ stm a -> stm [a]
- writeTBQueue :: TBQueue_ stm a -> a -> stm ()
- lengthTBQueue :: TBQueue_ stm a -> stm Natural
- isEmptyTBQueue :: TBQueue_ stm a -> stm Bool
- isFullTBQueue :: TBQueue_ stm a -> stm Bool
- newTMVarDefault :: MonadSTM m => a -> STM m (TMVarDefault m a)
- newTMVarIODefault :: MonadSTM m => a -> m (TMVarDefault m a)
- newTMVarMDefault :: MonadSTM m => a -> m (TMVarDefault m a)
- newEmptyTMVarDefault :: MonadSTM m => STM m (TMVarDefault m a)
- newEmptyTMVarIODefault :: MonadSTM m => m (TMVarDefault m a)
- newEmptyTMVarMDefault :: MonadSTM m => m (TMVarDefault m a)
- takeTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m a
- tryTakeTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m (Maybe a)
- putTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m ()
- tryPutTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m Bool
- readTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m a
- tryReadTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m (Maybe a)
- swapTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m a
- isEmptyTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m Bool
- newTQueueDefault :: MonadSTM m => STM m (TQueueDefault m a)
- writeTQueueDefault :: MonadSTM m => TQueueDefault m a -> a -> STM m ()
- readTQueueDefault :: MonadSTM m => TQueueDefault m a -> STM m a
- tryReadTQueueDefault :: MonadSTMTx (STM m) => TQueueDefault m a -> STM m (Maybe a)
- isEmptyTQueueDefault :: MonadSTMTx (STM m) => TQueueDefault m a -> STM m Bool
- newTBQueueDefault :: MonadSTM m => Natural -> STM m (TBQueueDefault m a)
- readTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m a
- tryReadTBQueueDefault :: MonadSTMTx (STM m) => TBQueueDefault m a -> STM m (Maybe a)
- writeTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> a -> STM m ()
- isEmptyTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Bool
- isFullTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Bool
- lengthTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Natural
- flushTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m [a]
- throwSTM :: (MonadSTMTx stm, MonadThrow stm, Exception e) => e -> stm a
- catchSTM :: (MonadSTMTx stm, MonadCatch stm, Exception e) => stm a -> (e -> stm a) -> stm a
- type LazyTVar m = TVar m
- type LazyTMVar m = TMVar m
- data StrictTVar m a
- castStrictTVar :: LazyTVar m ~ LazyTVar n => StrictTVar m a -> StrictTVar n a
- toLazyTVar :: StrictTVar m a -> LazyTVar m a
- newTVar :: MonadSTM m => a -> STM m (StrictTVar m a)
- newTVarIO :: MonadSTM m => a -> m (StrictTVar m a)
- newTVarWithInvariantIO :: (MonadSTM m, HasCallStack) => (a -> Maybe String) -> a -> m (StrictTVar m a)
- readTVar :: MonadSTM m => StrictTVar m a -> STM m a
- writeTVar :: (MonadSTM m, HasCallStack) => StrictTVar m a -> a -> STM m ()
- modifyTVar :: MonadSTM m => StrictTVar m a -> (a -> a) -> STM m ()
- stateTVar :: MonadSTM m => StrictTVar m a -> (a -> (a, b)) -> STM m b
- data StrictTMVar m a
- castStrictTMVar :: LazyTMVar m ~ LazyTMVar n => StrictTMVar m a -> StrictTMVar n a
- newTMVar :: MonadSTM m => a -> STM m (StrictTMVar m a)
- newTMVarIO :: MonadSTM m => a -> m (StrictTMVar m a)
- newEmptyTMVarIO :: MonadSTM m => m (StrictTMVar m a)
- newEmptyTMVar :: MonadSTM m => STM m (StrictTMVar m a)
- takeTMVar :: MonadSTM m => StrictTMVar m a -> STM m a
- tryTakeTMVar :: MonadSTM m => StrictTMVar m a -> STM m (Maybe a)
- putTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m ()
- tryPutTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m Bool
- readTMVar :: MonadSTM m => StrictTMVar m a -> STM m a
- tryReadTMVar :: MonadSTM m => StrictTMVar m a -> STM m (Maybe a)
- swapTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m a
- isEmptyTMVar :: MonadSTM m => StrictTMVar m a -> STM m Bool
- checkInvariant :: HasCallStack => Maybe String -> a -> a
- updateTVar :: MonadSTM m => StrictTVar m a -> (a -> (a, b)) -> STM m b
- newTVarM :: MonadSTM m => a -> m (StrictTVar m a)
- newTVarWithInvariantM :: (MonadSTM m, HasCallStack) => (a -> Maybe String) -> a -> m (StrictTVar m a)
- newTMVarM :: MonadSTM m => a -> m (StrictTMVar m a)
- newEmptyTMVarM :: MonadSTM m => m (StrictTMVar m a)
Documentation
data TBQueueDefault m a Source #
data TMVarDefault m a Source #
class (Monad m, MonadSTMTx (STM m)) => MonadSTM m where Source #
Minimal complete definition
Methods
atomically :: HasCallStack => STM m a -> m a Source #
newTBQueueIO :: Natural -> m (TBQueue m a) Source #
Instances
MonadSTM IO Source # | |
Defined in Control.Monad.Class.MonadSTM | |
MonadSTM m => MonadSTM (ReaderT r m) Source # | |
Defined in Control.Monad.Class.MonadSTM 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 #
Minimal complete definition
newTVar, readTVar, writeTVar, retry, orElse, newTMVar, newEmptyTMVar, takeTMVar, tryTakeTMVar, putTMVar, tryPutTMVar, readTMVar, tryReadTMVar, swapTMVar, isEmptyTMVar, newTQueue, readTQueue, tryReadTQueue, writeTQueue, isEmptyTQueue, newTBQueue, readTBQueue, tryReadTBQueue, flushTBQueue, writeTBQueue, lengthTBQueue, isEmptyTBQueue, isFullTBQueue
Associated Types
type TVar_ stm :: Type -> Type Source #
type TMVar_ stm :: Type -> Type Source #
Methods
orElse :: stm a -> stm a -> stm a Source #
modifyTVar' :: TVar_ stm a -> (a -> a) -> stm () Source #
check :: Bool -> stm () 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
newTMVarDefault :: MonadSTM m => a -> STM m (TMVarDefault m a) Source #
newTMVarIODefault :: MonadSTM m => a -> m (TMVarDefault m a) Source #
newTMVarMDefault :: MonadSTM m => a -> m (TMVarDefault m a) Source #
Deprecated: Use newTMVarIODefault
newEmptyTMVarDefault :: MonadSTM m => STM m (TMVarDefault m a) Source #
newEmptyTMVarIODefault :: MonadSTM m => m (TMVarDefault m a) Source #
newEmptyTMVarMDefault :: MonadSTM m => m (TMVarDefault m a) Source #
Deprecated: Use newEmptyTMVarIODefault
takeTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m a Source #
tryTakeTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m (Maybe a) Source #
putTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m () Source #
tryPutTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m Bool Source #
readTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m a Source #
tryReadTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m (Maybe a) Source #
swapTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m a Source #
isEmptyTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m Bool Source #
newTQueueDefault :: MonadSTM m => STM m (TQueueDefault m a) Source #
writeTQueueDefault :: MonadSTM m => TQueueDefault m a -> a -> STM m () Source #
readTQueueDefault :: MonadSTM m => TQueueDefault m a -> STM m a Source #
tryReadTQueueDefault :: MonadSTMTx (STM m) => TQueueDefault m a -> STM m (Maybe a) Source #
isEmptyTQueueDefault :: MonadSTMTx (STM m) => TQueueDefault m a -> STM m Bool Source #
newTBQueueDefault :: MonadSTM m => Natural -> STM m (TBQueueDefault m a) Source #
readTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m a Source #
tryReadTBQueueDefault :: MonadSTMTx (STM m) => TBQueueDefault m a -> STM m (Maybe a) Source #
writeTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> a -> STM m () Source #
isEmptyTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Bool Source #
isFullTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Bool Source #
lengthTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m Natural Source #
flushTBQueueDefault :: MonadSTM m => TBQueueDefault m a -> STM m [a] Source #
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.
StrictTVar
data StrictTVar m a Source #
castStrictTVar :: LazyTVar m ~ LazyTVar n => StrictTVar m a -> StrictTVar n a Source #
toLazyTVar :: StrictTVar m a -> LazyTVar m a Source #
Get the underlying TVar
Since we obviously cannot guarantee that updates to this LazyTVar
will be
strict, this should be used with caution.
newTVarIO :: MonadSTM m => a -> m (StrictTVar m a) Source #
newTVarWithInvariantIO Source #
Arguments
:: (MonadSTM m, HasCallStack) | |
=> (a -> Maybe String) | Invariant (expect |
-> a | |
-> m (StrictTVar m a) |
writeTVar :: (MonadSTM m, HasCallStack) => StrictTVar m a -> a -> STM m () Source #
modifyTVar :: MonadSTM m => StrictTVar m a -> (a -> a) -> STM m () Source #
StrictTMVar
data StrictTMVar m a Source #
castStrictTMVar :: LazyTMVar m ~ LazyTMVar n => StrictTMVar m a -> StrictTMVar n a Source #
newTMVarIO :: MonadSTM m => a -> m (StrictTMVar m a) Source #
newEmptyTMVarIO :: MonadSTM m => m (StrictTMVar m a) Source #
newEmptyTMVar :: MonadSTM m => STM m (StrictTMVar m a) Source #
tryTakeTMVar :: MonadSTM m => StrictTMVar m a -> STM m (Maybe a) Source #
tryPutTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m Bool Source #
tryReadTMVar :: MonadSTM m => StrictTMVar m a -> STM m (Maybe a) Source #
isEmptyTMVar :: MonadSTM m => StrictTMVar m a -> STM m Bool Source #
Low-level API
checkInvariant :: HasCallStack => Maybe String -> a -> a Source #
Check invariant (if enabled) before continuing
checkInvariant mErr x
is equal to x
if mErr == Nothing
, and throws
an error err
if mErr == Just err
.
This is exported so that other code that wants to conditionally check invariants can reuse the same logic, rather than having to introduce new per-package flags.
Deprecated API
updateTVar :: MonadSTM m => StrictTVar m a -> (a -> (a, b)) -> STM m b Source #
Deprecated: Use stateTVar
newTVarM :: MonadSTM m => a -> m (StrictTVar m a) Source #
Deprecated: Use newTVarIO
newTVarWithInvariantM Source #
Arguments
:: (MonadSTM m, HasCallStack) | |
=> (a -> Maybe String) | Invariant (expect |
-> a | |
-> m (StrictTVar m a) |
Deprecated: Use newTVarWithInvariantIO
newTMVarM :: MonadSTM m => a -> m (StrictTMVar m a) Source #
Deprecated: Use newTVarIO
newEmptyTMVarM :: MonadSTM m => m (StrictTMVar m a) Source #
Deprecated: Use newEmptyTMVarIO