monad-var-0.2.2.0: Generic operations over variables
Safe HaskellSafe-Inferred
LanguageHaskell2010

MonadVar.Classes

Synopsis

Documentation

class Monad m => MonadNew m v where Source #

A type class for containers that can be created and initialized with a single value.

Methods

new :: a -> m (v a) Source #

Instances

Instances details
MonadNew IO TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

new :: a -> IO (TVar a) Source #

MonadNew IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

new :: a -> IO (TMVar a) Source #

MonadIO m => MonadNew m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

new :: a -> m (MVar a) Source #

MonadIO m => MonadNew m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

new :: a -> m (IORef a) Source #

MonadNew STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

new :: a -> STM (TVar a) Source #

MonadNew STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

new :: a -> STM (TMVar a) Source #

MonadNew (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

new :: a -> ST s (STRef s a) Source #

class (MonadRead m v, Monad m) => MonadLock m v where Source #

A type class for at most one element containers. An attempt to get a value from an empty container or to put a value into a full container results in a block. I.e. this is a type class for MVar-like things.

Methods

hold :: v a -> m a Source #

Get a value from a container. Block on empty. A la takeMVar.

fill :: v a -> a -> m () Source #

Put a value to a container. Block on full. A la putMVar.

tryHold :: v a -> m (Maybe a) Source #

Get a value from a container. Return Nothing on empty. A la tryTakeMVar.

tryFill :: v a -> a -> m Bool Source #

Put a value to a container. Return Nothing on full. A la tryPutMVar.

tryRead :: v a -> m (Maybe a) Source #

Read a value from a container. Return Nothing on empty. A la tryReadMVar.

newEmpty :: m (v a) Source #

Create an empty container. A la newEmptyMVar.

isEmpty :: v a -> m Bool Source #

Check whether a container is empty. A la isEmptyMVar.

Instances

Instances details
MonadLock IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

hold :: TMVar a -> IO a Source #

fill :: TMVar a -> a -> IO () Source #

tryHold :: TMVar a -> IO (Maybe a) Source #

tryFill :: TMVar a -> a -> IO Bool Source #

tryRead :: TMVar a -> IO (Maybe a) Source #

newEmpty :: IO (TMVar a) Source #

isEmpty :: TMVar a -> IO Bool Source #

MonadIO m => MonadLock m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

hold :: MVar a -> m a Source #

fill :: MVar a -> a -> m () Source #

tryHold :: MVar a -> m (Maybe a) Source #

tryFill :: MVar a -> a -> m Bool Source #

tryRead :: MVar a -> m (Maybe a) Source #

newEmpty :: m (MVar a) Source #

isEmpty :: MVar a -> m Bool Source #

MonadLock STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

hold :: TMVar a -> STM a Source #

fill :: TMVar a -> a -> STM () Source #

tryHold :: TMVar a -> STM (Maybe a) Source #

tryFill :: TMVar a -> a -> STM Bool Source #

tryRead :: TMVar a -> STM (Maybe a) Source #

newEmpty :: STM (TMVar a) Source #

isEmpty :: TMVar a -> STM Bool Source #

class Monad m => MonadRead m v where Source #

A type class for containers from which a single value can be read.

Methods

read :: v a -> m a Source #

Instances

Instances details
MonadRead IO TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

read :: TVar a -> IO a Source #

MonadRead IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

read :: TMVar a -> IO a Source #

MonadIO m => MonadRead m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

read :: MVar a -> m a Source #

MonadIO m => MonadRead m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

read :: IORef a -> m a Source #

MonadRead STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

read :: TVar a -> STM a Source #

MonadRead STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

read :: TMVar a -> STM a Source #

MonadRead (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

read :: STRef s a -> ST s a Source #

class Monad m => MonadWrite m v where Source #

A type class for containers to which a single value can be written.

Methods

write :: v a -> a -> m () Source #

Instances

Instances details
MonadWrite IO TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

write :: TVar a -> a -> IO () Source #

MonadWrite IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

write :: TMVar a -> a -> IO () Source #

MonadIO m => MonadWrite m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

write :: MVar a -> a -> m () Source #

MonadIO m => MonadWrite m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

write :: IORef a -> a -> m () Source #

MonadWrite STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

write :: TVar a -> a -> STM () Source #

MonadWrite STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

write :: TMVar a -> a -> STM () Source #

MonadWrite (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

write :: STRef s a -> a -> ST s () Source #

class Monad m => MonadSwap m v where Source #

A type class for containers for which one value can be replaced with an another (not necessarily at the same position).

Methods

swap :: v a -> a -> m a Source #

Replace a value from a container by a new one and return the original value.

Instances

Instances details
MonadSwap IO TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

swap :: TVar a -> a -> IO a Source #

MonadSwap IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

swap :: TMVar a -> a -> IO a Source #

MonadIO m => MonadSwap m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

swap :: MVar a -> a -> m a Source #

MonadIO m => MonadSwap m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

swap :: IORef a -> a -> m a Source #

MonadSwap STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

swap :: TVar a -> a -> STM a Source #

MonadSwap STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

swap :: TMVar a -> a -> STM a Source #

MonadSwap (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

swap :: STRef s a -> a -> ST s a Source #

class MonadWrite m v => MonadMutate_ m v where Source #

A type class for mutable containers which can be mapped over.

Methods

mutate_ :: v a -> (a -> a) -> m () Source #

Instances

Instances details
MonadMutate_ IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutate_ :: TMVar a -> (a -> a) -> IO () Source #

MonadIO m => MonadMutate_ m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

mutate_ :: MVar a -> (a -> a) -> m () Source #

MonadIO m => MonadMutate_ m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

mutate_ :: IORef a -> (a -> a) -> m () Source #

MonadMutate_ STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

mutate_ :: TVar a -> (a -> a) -> STM () Source #

MonadMutate_ STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutate_ :: TMVar a -> (a -> a) -> STM () Source #

MonadMutate_ (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

mutate_ :: STRef s a -> (a -> a) -> ST s () Source #

class (MonadRead m v, MonadMutate_ m v) => MonadMutate m v where Source #

A type class for one-element containers which can be mapped and folded over simultaneously. These are basically variables.

Methods

mutate :: v a -> (a -> (a, b)) -> m b Source #

Mutate a variable and return an additional value.

Instances

Instances details
MonadMutate IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutate :: TMVar a -> (a -> (a, b)) -> IO b Source #

MonadIO m => MonadMutate m MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

mutate :: MVar a -> (a -> (a, b)) -> m b Source #

MonadIO m => MonadMutate m IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

mutate :: IORef a -> (a -> (a, b)) -> m b Source #

MonadMutate STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

mutate :: TVar a -> (a -> (a, b)) -> STM b Source #

MonadMutate STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutate :: TMVar a -> (a -> (a, b)) -> STM b Source #

MonadMutate (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

mutate :: STRef s a -> (a -> (a, b)) -> ST s b Source #

class MonadFoldMutate m v where Source #

A type class for mutable containers which can be mapped and folded over simultaneously.

Methods

foldMutate :: Monoid b => v a -> (a -> (a, b)) -> m b Source #

class MonadMutate_ m v => MonadMutateM_ f m v where Source #

A type class for mutable containers which can be monadically mapped over.

Methods

mutateM_ :: v a -> (a -> f a) -> m () Source #

Instances

Instances details
MonadMutateM_ IO IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM_ :: TMVar a -> (a -> IO a) -> IO () Source #

STM ~ stm => MonadMutateM_ stm STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

mutateM_ :: TVar a -> (a -> stm a) -> STM () Source #

STM ~ stm => MonadMutateM_ stm STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM_ :: TMVar a -> (a -> stm a) -> STM () Source #

IO ~ io => MonadMutateM_ io IO MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

mutateM_ :: MVar a -> (a -> io a) -> IO () Source #

IO ~ io => MonadMutateM_ io IO IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

mutateM_ :: IORef a -> (a -> io a) -> IO () Source #

MonadMutateM_ STM IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM_ :: TMVar a -> (a -> STM a) -> IO () Source #

ST s ~ st_s => MonadMutateM_ st_s (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

mutateM_ :: STRef s a -> (a -> st_s a) -> ST s () Source #

class (MonadMutate m v, MonadMutateM_ f m v) => MonadMutateM f m v where Source #

A type class for one-element containers which can be monadically mapped and folded over simultaneously. These are basically variables.

Methods

mutateM :: v a -> (a -> f (a, b)) -> m b Source #

Monadically mutate a variable and return an additional value.

Instances

Instances details
MonadMutateM IO IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM :: TMVar a -> (a -> IO (a, b)) -> IO b Source #

STM ~ stm => MonadMutateM stm STM TVar Source # 
Instance details

Defined in MonadVar.Instances.TVar

Methods

mutateM :: TVar a -> (a -> stm (a, b)) -> STM b Source #

STM ~ stm => MonadMutateM stm STM TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM :: TMVar a -> (a -> stm (a, b)) -> STM b Source #

IO ~ io => MonadMutateM io IO MVar Source # 
Instance details

Defined in MonadVar.Instances.MVar

Methods

mutateM :: MVar a -> (a -> io (a, b)) -> IO b Source #

IO ~ io => MonadMutateM io IO IORef Source # 
Instance details

Defined in MonadVar.Instances.IORef

Methods

mutateM :: IORef a -> (a -> io (a, b)) -> IO b Source #

MonadMutateM STM IO TMVar Source # 
Instance details

Defined in MonadVar.Instances.TMVar

Methods

mutateM :: TMVar a -> (a -> STM (a, b)) -> IO b Source #

ST s ~ st_s => MonadMutateM st_s (ST s) (STRef s) Source # 
Instance details

Defined in MonadVar.Instances.STRef

Methods

mutateM :: STRef s a -> (a -> st_s (a, b)) -> ST s b Source #

class MonadFoldMutateM m n v where Source #

A type class for mutable containers which can be monadically mapped and folded over simultaneously.

Methods

foldMutateM :: Monoid b => v a -> (a -> m (a, b)) -> n b Source #