hw-polysemy-0.2.0.0: core/HaskellWorks/Polysemy/Control/Concurrent/STM/TVar.hs
module HaskellWorks.Polysemy.Control.Concurrent.STM.TVar
( TVar,
STM.newTVar,
newTVarIO,
STM.readTVar,
readTVarIO,
STM.writeTVar,
STM.modifyTVar,
STM.modifyTVar',
STM.stateTVar,
STM.swapTVar,
registerDelay,
) where
import Control.Concurrent.STM (TVar)
import qualified Control.Concurrent.STM as STM
import HaskellWorks.Polysemy.Prelude
import Polysemy
newTVarIO :: ()
=> Member (Embed IO) r
=> a
-> Sem r (TVar a)
newTVarIO a = do
embed $ STM.newTVarIO a
readTVarIO :: ()
=> Member (Embed IO) r
=> TVar a
-> Sem r a
readTVarIO tvar = do
embed $ STM.readTVarIO tvar
registerDelay :: ()
=> Member (Embed IO) r
=> Int
-> Sem r (TVar Bool)
registerDelay n = do
embed $ STM.registerDelay n