Newer
Older
module Quasar.PreludeSTM (
MonadSTM,
liftSTM,
atomically,
newUniqueSTM,
module Control.Concurrent.STM,
newTVar,
newTVarIO,
readTVar,
readTVarIO,
writeTVar,
modifyTVar,
modifyTVar',
stateTVar,
swapTVar,
import Control.Concurrent.STM hiding (
atomically,
newTVar,
newTVarIO,
readTVar,
readTVarIO,
writeTVar,
modifyTVar,
modifyTVar',
stateTVar,
swapTVar,
)
import Control.Concurrent.STM qualified as STM
import Control.Monad.Base
import Control.Monad.IO.Class
import Data.Unique (Unique, newUnique)
import GHC.Conc (unsafeIOToSTM)
import Prelude
type MonadSTM = MonadBase STM
liftSTM :: MonadSTM m => STM a -> m a
liftSTM = liftBase
atomically :: MonadIO m => STM a -> m a
atomically t = liftIO (STM.atomically t)
newUniqueSTM :: MonadSTM m => m Unique
newUniqueSTM = liftSTM (unsafeIOToSTM newUnique)
newTVar :: MonadSTM m => a -> m (TVar a)
newTVar = liftSTM . STM.newTVar
newTVarIO :: MonadIO m => a -> m (TVar a)
newTVarIO = liftIO . STM.newTVarIO
readTVar :: MonadSTM m => TVar a -> m a
readTVar = liftSTM . STM.readTVar
readTVarIO :: MonadIO m => TVar a -> m a
readTVarIO = liftIO . STM.readTVarIO
writeTVar :: MonadSTM m => TVar a -> a -> m ()
writeTVar var = liftSTM . STM.writeTVar var
modifyTVar :: MonadSTM m => TVar a -> (a -> a) -> m ()
modifyTVar var = liftSTM . STM.modifyTVar var
modifyTVar' :: MonadSTM m => TVar a -> (a -> a) -> m ()
modifyTVar' var = liftSTM . STM.modifyTVar' var
stateTVar :: MonadSTM m => TVar s -> (s -> (a, s)) -> m a
stateTVar var = liftSTM . STM.stateTVar var
swapTVar :: MonadSTM m => TVar a -> a -> m a
swapTVar var = liftSTM . STM.swapTVar var