| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Effects.Concurrent.STM
Description
Provides classes for STM.
Since: 0.1
Synopsis
- data STM a
- class Monad m => MonadAtomic (m :: Type -> Type) where
- atomically :: HasCallStack => STM a -> m a
- data TVar a
- newTVar' :: a -> STM (TVar a)
- readTVar' :: TVar a -> STM a
- writeTVar' :: TVar a -> a -> STM ()
- modifyTVar' :: TVar a -> (a -> a) -> STM ()
- newTVarA' :: (HasCallStack, MonadAtomic m) => a -> m (TVar a)
- readTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> m a
- writeTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> a -> m ()
- modifyTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> (a -> a) -> m ()
- newTVar :: a -> STM (TVar a)
- readTVar :: TVar a -> STM a
- writeTVar :: TVar a -> a -> STM ()
- modifyTVar :: TVar a -> (a -> a) -> STM ()
- newTVarA :: (HasCallStack, MonadAtomic m) => a -> m (TVar a)
- readTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> m a
- writeTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> a -> m ()
- modifyTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> (a -> a) -> m ()
- data TBQueue a
- readTBQueue' :: TBQueue a -> STM a
- tryReadTBQueue' :: TBQueue a -> STM (Maybe a)
- writeTBQueue' :: TBQueue a -> a -> STM ()
- flushTBQueue' :: TBQueue a -> STM [a]
- readTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m a
- tryReadTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m (Maybe a)
- writeTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> a -> m ()
- flushTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m [a]
- newTBQueue :: Natural -> STM (TBQueue a)
- readTBQueue :: TBQueue a -> STM a
- tryReadTBQueue :: TBQueue a -> STM (Maybe a)
- writeTBQueue :: TBQueue a -> a -> STM ()
- flushTBQueue :: TBQueue a -> STM [a]
- newTBQueueA :: (HasCallStack, MonadAtomic m) => Natural -> m (TBQueue a)
- readTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m a
- tryReadTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m (Maybe a)
- writeTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> a -> m ()
- flushTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m [a]
- data Natural
Effect
A monad supporting atomic memory transactions.
Instances
| Alternative STM # | Takes the first non- Since: base-4.8.0.0 |
| Applicative STM # | Since: base-4.8.0.0 |
| Functor STM # | Since: base-4.3.0.0 |
| Monad STM # | Since: base-4.3.0.0 |
| MonadPlus STM # | Takes the first non- Since: base-4.3.0.0 |
| MArray TArray e STM # | |
Defined in Control.Concurrent.STM.TArray Methods getBounds :: Ix i => TArray i e -> STM (i, i) # getNumElements :: Ix i => TArray i e -> STM Int # newArray :: Ix i => (i, i) -> e -> STM (TArray i e) # newArray_ :: Ix i => (i, i) -> STM (TArray i e) # unsafeNewArray_ :: Ix i => (i, i) -> STM (TArray i e) # | |
| Monoid a => Monoid (STM a) # | Since: base-4.17.0.0 |
| Semigroup a => Semigroup (STM a) # | Since: base-4.17.0.0 |
class Monad m => MonadAtomic (m :: Type -> Type) where Source #
Effect for atomically lifting STM actions. Note that this classes is
intended for "IO-like" monads not "STM-like" monads -- hence has no STM
instance -- as the semantics for "STM-like" and "can lift STM atomically"
are different.
Since: 0.1
Instances
| MonadAtomic IO Source # | Since: 0.1 |
Defined in Effects.Concurrent.STM Methods atomically :: HasCallStack => STM a -> IO a Source # | |
| MonadAtomic m => MonadAtomic (ReaderT e m) Source # | Since: 0.1 |
Defined in Effects.Concurrent.STM Methods atomically :: HasCallStack => STM a -> ReaderT e m a Source # | |
TVar
Shared memory locations that support atomic memory transactions.
Strict
modifyTVar' :: TVar a -> (a -> a) -> STM () #
Strict version of modifyTVar.
Since: stm-2.3
Atomic
newTVarA' :: (HasCallStack, MonadAtomic m) => a -> m (TVar a) Source #
Atomic newTVar'.
Since: 0.1
readTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> m a Source #
Atomic readTVarA'.
Since: 0.1
writeTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> a -> m () Source #
Atomic writeTVarA'.
Since: 0.1
modifyTVarA' :: (HasCallStack, MonadAtomic m) => TVar a -> (a -> a) -> m () Source #
Atomic modifyTVar'.
Since: 0.1
Lazy
modifyTVar :: TVar a -> (a -> a) -> STM () #
Mutate the contents of a TVar. N.B., this version is
non-strict.
Since: stm-2.3
Atomic
newTVarA :: (HasCallStack, MonadAtomic m) => a -> m (TVar a) Source #
Create a new TVar holding a value supplied and lifts the result via
atomically.
Since: 0.1
readTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> m a Source #
Return the current value stored in a TVar and lifts the result via
atomically.
Since: 0.1
writeTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> a -> m () Source #
Write the supplied value into a TVar and lifts the action via
atomically.
Since: 0.1
modifyTVarA :: (HasCallStack, MonadAtomic m) => TVar a -> (a -> a) -> m () Source #
Atomic modifyTVar.
Since: 0.1
TBQueue
TBQueue is an abstract type representing a bounded FIFO channel.
Since: stm-2.4
Strict
readTBQueue' :: TBQueue a -> STM a Source #
Evaluates the output from readTBQueue to WHNF.
Since: 0.1
tryReadTBQueue' :: TBQueue a -> STM (Maybe a) Source #
Evaluates the output from tryReadTBQueue to Nothing or
Just a, where a is in WHNF.
Since: 0.1
writeTBQueue' :: TBQueue a -> a -> STM () Source #
Evaluates the input to writeTBQueue to WHNF.
Since: 0.1
flushTBQueue' :: TBQueue a -> STM [a] Source #
Evaluates the output from flushTBQueue to WHNF.
Since: 0.1
Atomic
readTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m a Source #
Atomic readTBQueue'.
Since: 0.1
tryReadTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m (Maybe a) Source #
Atomic tryReadTBQueue'.
Since: 0.1
writeTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> a -> m () Source #
Atomic writeTBQueue'.
Since: 0.1
flushTBQueueA' :: (HasCallStack, MonadAtomic m) => TBQueue a -> m [a] Source #
Atomic flushTBQueue'.
Since: 0.1
Lazy
Builds and returns a new instance of TBQueue.
readTBQueue :: TBQueue a -> STM a #
Read the next value from the TBQueue.
tryReadTBQueue :: TBQueue a -> STM (Maybe a) #
A version of readTBQueue which does not retry. Instead it
returns Nothing if no value is available.
writeTBQueue :: TBQueue a -> a -> STM () #
Write a value to a TBQueue; blocks if the queue is full.
flushTBQueue :: TBQueue a -> STM [a] #
Efficiently read the entire contents of a TBQueue into a list. This
function never retries.
Since: stm-2.4.5
Atomic
Arguments
| :: (HasCallStack, MonadAtomic m) | |
| => Natural | maximum number of elements the queue can hold |
| -> m (TBQueue a) |
Builds and returns a new instance of TBQueue, lifting via atomically.
Since: 0.1
readTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m a Source #
Read the next value from the TBQueue, lifting via atomically.
Since: 0.1
tryReadTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m (Maybe a) Source #
A version of readTBQueue which does not retry. Instead it
returns Nothing if no value is available. Lifts via atomically.
Since: 0.1
writeTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> a -> m () Source #
Write a value to a TBQueue; blocks if the queue is full. Lifts via
atomically.
Since: 0.1
flushTBQueueA :: (HasCallStack, MonadAtomic m) => TBQueue a -> m [a] Source #
Efficiently read the entire contents of a TBQueue into a list. This
function never retries. Lifts via atomically.
Since: 0.1
Reexports
Natural number
Invariant: numbers <= 0xffffffffffffffff use the NS constructor
Instances
| PrintfArg Natural # | Since: base-4.8.0.0 |
Defined in Text.Printf | |
| Num Natural # | Note that Since: base-4.8.0.0 |
| Eq Natural # | |
| Ord Natural # | |
| KnownNat n => HasResolution (n :: Nat) # | For example, |
Defined in Data.Fixed Methods resolution :: p n -> Integer # | |