effects-stm-0.1: STM effects
Safe HaskellNone
LanguageGHC2021

Effects.Concurrent.STM

Description

Provides classes for STM.

Since: 0.1

Synopsis

Effect

data STM a #

A monad supporting atomic memory transactions.

Instances

Instances details
Alternative STM

Takes the first non-retrying STM action.

Since: base-4.8.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

empty :: STM a #

(<|>) :: STM a -> STM a -> STM a #

some :: STM a -> STM [a] #

many :: STM a -> STM [a] #

Applicative STM

Since: base-4.8.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

pure :: a -> STM a #

(<*>) :: STM (a -> b) -> STM a -> STM b #

liftA2 :: (a -> b -> c) -> STM a -> STM b -> STM c #

(*>) :: STM a -> STM b -> STM b #

(<*) :: STM a -> STM b -> STM a #

Functor STM

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

fmap :: (a -> b) -> STM a -> STM b #

(<$) :: a -> STM b -> STM a #

Monad STM

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

(>>=) :: STM a -> (a -> STM b) -> STM b #

(>>) :: STM a -> STM b -> STM b #

return :: a -> STM a #

MonadPlus STM

Takes the first non-retrying STM action.

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

mzero :: STM a #

mplus :: STM a -> STM a -> STM a #

MArray TArray e STM 
Instance details

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) #

unsafeRead :: Ix i => TArray i e -> Int -> STM e #

unsafeWrite :: Ix i => TArray i e -> Int -> e -> STM () #

Monoid a => Monoid (STM a)

Since: base-4.17.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

mempty :: STM a #

mappend :: STM a -> STM a -> STM a #

mconcat :: [STM a] -> STM a #

Semigroup a => Semigroup (STM a)

Since: base-4.17.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

(<>) :: STM a -> STM a -> STM a #

sconcat :: NonEmpty (STM a) -> STM a #

stimes :: Integral b => b -> STM a -> STM a #

class Monad m => MonadSTM (m :: Type -> Type) where Source #

STM effect. Note that this class is for monads that can lift entire STM transactions (i.e. atomically). It is not intended for "STM-like" monads -- hence has no STM instance -- as the semantics for "STM-like" and "can lift STM atomically" are different.

Since: 0.1

Methods

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

Lifted atomically.

Since: 0.1

Instances

Instances details
MonadSTM IO Source #

Since: 0.1

Instance details

Defined in Effects.Concurrent.STM

Methods

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

MonadSTM m => MonadSTM (ReaderT e m) Source #

Since: 0.1

Instance details

Defined in Effects.Concurrent.STM

Methods

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

TVar

data TVar a #

Shared memory locations that support atomic memory transactions.

Instances

Instances details
Eq (TVar a)

Since: base-4.8.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

(==) :: TVar a -> TVar a -> Bool #

(/=) :: TVar a -> TVar a -> Bool #

newTVarA :: (HasCallStack, MonadSTM 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, MonadSTM 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, MonadSTM m) => TVar a -> a -> m () Source #

Write the supplied value into a TVar and lifts the action via atomically.

Since: 0.1

modifyTVarA' :: (HasCallStack, MonadSTM m) => TVar a -> (a -> a) -> m () Source #

Strict version of modifyTVar, lifting the action via atomically.

Since: 0.1

TBQueue

data TBQueue a #

TBQueue is an abstract type representing a bounded FIFO channel.

Since: stm-2.4

Instances

Instances details
Eq (TBQueue a) 
Instance details

Defined in Control.Concurrent.STM.TBQueue

Methods

(==) :: TBQueue a -> TBQueue a -> Bool #

(/=) :: TBQueue a -> TBQueue a -> Bool #

newTBQueueA Source #

Arguments

:: (HasCallStack, MonadSTM 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, MonadSTM m) => TBQueue a -> m a Source #

Read the next value from the TBQueue, lifting via atomically.

Since: 0.1

tryReadTBQueueA :: (HasCallStack, MonadSTM 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, MonadSTM 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, MonadSTM 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

data Natural #

Natural number

Invariant: numbers <= 0xffffffffffffffff use the NS constructor

Instances

Instances details
Data Natural

Since: base-4.8.0.0

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Natural -> c Natural #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Natural #

toConstr :: Natural -> Constr #

dataTypeOf :: Natural -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Natural) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Natural) #

gmapT :: (forall b. Data b => b -> b) -> Natural -> Natural #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r #

gmapQ :: (forall d. Data d => d -> u) -> Natural -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Natural -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

Bits Natural

Since: base-4.8.0

Instance details

Defined in GHC.Bits

Enum Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Enum

Ix Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Ix

Num Natural

Note that Natural's Num instance isn't a ring: no element but 0 has an additive inverse. It is a semiring though.

Since: base-4.8.0.0

Instance details

Defined in GHC.Num

Read Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Read

Integral Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Real Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Show Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Show

PrintfArg Natural

Since: base-4.8.0.0

Instance details

Defined in Text.Printf

Eq Natural 
Instance details

Defined in GHC.Num.Natural

Methods

(==) :: Natural -> Natural -> Bool #

(/=) :: Natural -> Natural -> Bool #

Ord Natural 
Instance details

Defined in GHC.Num.Natural

KnownNat n => HasResolution (n :: Nat)

For example, Fixed 1000 will give you a Fixed with a resolution of 1000.

Instance details

Defined in Data.Fixed

Methods

resolution :: p n -> Integer #

TestCoercion SNat

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeNats

Methods

testCoercion :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> Maybe (Coercion a b) #

TestEquality SNat

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeNats

Methods

testEquality :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> Maybe (a :~: b) #

type Compare (a :: Natural) (b :: Natural) 
Instance details

Defined in Data.Type.Ord

type Compare (a :: Natural) (b :: Natural) = CmpNat a b