| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
MonadVar
- class Monad m => MonadNew m v where
- class (MonadRead m v, Monad m) => MonadLock m v where
- class Monad m => MonadRead m v where
- class Monad m => MonadWrite m v where
- class Monad m => MonadSwap m v where
- class (MonadRead m v, MonadWrite m v) => MonadFoldMutateM m n v where
- class (MonadRead m v, MonadWrite m v) => MonadMutateM m n v where
- class MonadWrite m v => MonadMutateM_ m n v where
- class MonadWrite m v => MonadFoldMutate m v where
- class (MonadRead m v, MonadWrite m v) => MonadMutate m v where
- class MonadWrite m v => MonadMutate_ m v where
- defaultLockUnsafeWrite :: MonadLock m v => v a -> a -> m ()
- defaultReadWriteSwap :: (MonadRead m v, MonadWrite m v) => v a -> a -> m a
- defaultLockUnsafeSwap :: MonadLock m v => v a -> a -> m a
- defaultReadWriteMutateM :: (MonadRead m v, MonadWrite m v) => v a -> (a -> m (a, b)) -> m b
- defaultReadWriteMutateM_ :: (MonadRead m v, MonadWrite m v) => v a -> (a -> m a) -> m ()
- defaultReadWriteMutate :: (MonadRead m v, MonadWrite m v) => v a -> (a -> (a, b)) -> m b
- defaultReadWriteMutate_ :: (MonadRead m v, MonadWrite m v) => v a -> (a -> a) -> m ()
- defaultLockUnsafeMutateM :: MonadLock m v => v a -> (a -> m (a, b)) -> m b
- defaultLockUnsafeMutateM_ :: MonadLock m v => v a -> (a -> m a) -> m ()
- defaultLockUnsafeMutate :: MonadLock m v => v a -> (a -> (a, b)) -> m b
- defaultLockUnsafeMutate_ :: MonadLock m v => v a -> (a -> a) -> m ()
- defaultLockIOMutateM :: MonadLock IO v => v a -> (a -> IO (a, b)) -> IO b
- defaultLockIOMutateM_ :: MonadLock IO v => v a -> (a -> IO a) -> IO ()
- postMutateM :: MonadMutateM m n v => v a -> (a -> m (a, b)) -> n (a, b)
- preMutateM :: MonadMutateM m n v => v a -> (a -> m (a, b)) -> n (a, b)
- postMutateM_ :: MonadMutateM m n v => v a -> (a -> m a) -> n a
- preMutateM_ :: MonadMutateM m n v => v a -> (a -> m a) -> n a
- postMutate :: MonadMutate m v => v a -> (a -> (a, b)) -> m (a, b)
- preMutate :: MonadMutate m v => v a -> (a -> (a, b)) -> m (a, b)
- postMutate_ :: MonadMutate m v => v a -> (a -> a) -> m a
- preMutate_ :: MonadMutate m v => v a -> (a -> a) -> m a
Documentation
class Monad m => MonadNew m v where Source #
A type class for containers that can be created and initialized with a single value.
Minimal complete definition
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
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.
Create an empty container.
A la newEmptyMVar.
isEmpty :: v a -> m Bool Source #
Check whether a container is empty.
A la isEmptyMVar.
class Monad m => MonadRead m v where Source #
A type class for containers from which a single value can be read.
Minimal complete definition
class Monad m => MonadWrite m v where Source #
A type class for containers to which a single value can be written.
Minimal complete definition
Instances
| MonadWrite IO TVar Source # | |
| MonadWrite IO IORef Source # | |
| MonadWrite IO MVar Source # | |
| MonadWrite IO TMVar Source # | |
| MonadWrite STM TVar Source # | |
| MonadWrite STM TMVar Source # | |
| (MonadTrans t, Monad (t m), MonadWrite m v) => MonadWrite (t m) v Source # | |
| MonadWrite (ST s) (STRef 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).
Minimal complete definition
class (MonadRead m v, MonadWrite m v) => MonadFoldMutateM m n v where Source #
A type class for mutable containers which can be monadically mapped and folded over simultaneously.
Minimal complete definition
Methods
foldMutateM :: Monoid b => v a -> (a -> m (a, b)) -> n b Source #
class (MonadRead m v, MonadWrite m v) => MonadMutateM m n v where Source #
A type class for one-element containers which can be monadically mapped and folded over simultaneously. These are basically variables.
Minimal complete definition
Methods
mutateM :: v a -> (a -> m (a, b)) -> n b Source #
Monadically mutate a variable and return an additional value.
Instances
| MonadMutateM IO IO TMVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM stm STM TMVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM stm IO TVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM stm STM TVar Source # | |
| (~) (* -> *) IO io => MonadMutateM io IO MVar Source # | |
| (~) (* -> *) IO io => MonadMutateM io IO IORef Source # | |
| MonadMutateM STM IO TMVar Source # | |
| (~) (* -> *) (ST s) st_s => MonadMutateM st_s (ST s) (STRef s) Source # | |
class MonadWrite m v => MonadMutateM_ m n v where Source #
A type class for mutable containers which can be monadically mapped over.
Minimal complete definition
Instances
| MonadMutateM_ IO IO TMVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM_ stm STM TMVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM_ stm IO TVar Source # | |
| (~) (* -> *) STM stm => MonadMutateM_ stm STM TVar Source # | |
| (~) (* -> *) IO io => MonadMutateM_ io IO MVar Source # | |
| (~) (* -> *) IO io => MonadMutateM_ io IO IORef Source # | |
| MonadMutateM_ STM IO TMVar Source # | |
| (~) (* -> *) (ST s) st_s => MonadMutateM_ st_s (ST s) (STRef s) Source # | |
class MonadWrite m v => MonadFoldMutate m v where Source #
A type class for mutable containers which can be mapped and folded over simultaneously.
Minimal complete definition
Methods
foldMutate :: Monoid b => v a -> (a -> (a, b)) -> m b Source #
class (MonadRead m v, MonadWrite 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.
Minimal complete definition
Methods
mutate :: v a -> (a -> (a, b)) -> m b Source #
Mutate a variable and return an additional value.
Instances
| MonadMutate IO TVar Source # | |
| MonadMutate IO IORef Source # | |
| MonadMutate IO MVar Source # | |
| MonadMutate IO TMVar Source # | |
| MonadMutate STM TVar Source # | |
| MonadMutate STM TMVar Source # | |
| (MonadTrans t, Monad (t m), MonadMutate m v) => MonadMutate (t m) v Source # | |
| MonadMutate (ST s) (STRef s) Source # | |
class MonadWrite m v => MonadMutate_ m v where Source #
A type class for mutable containers which can be mapped over.
Minimal complete definition
Instances
| MonadMutate_ IO TVar Source # | |
| MonadMutate_ IO IORef Source # | |
| MonadMutate_ IO MVar Source # | |
| MonadMutate_ IO TMVar Source # | |
| MonadMutate_ STM TVar Source # | |
| MonadMutate_ STM TMVar Source # | |
| (MonadTrans t, Monad (t m), MonadMutate_ m v) => MonadMutate_ (t m) v Source # | |
| MonadMutate_ (ST s) (STRef s) Source # | |
defaultLockUnsafeWrite :: MonadLock m v => v a -> a -> m () Source #
defaultReadWriteSwap :: (MonadRead m v, MonadWrite m v) => v a -> a -> m a Source #
Default swap for MonadRead and MonadWrite entities.
defaultLockUnsafeSwap :: MonadLock m v => v a -> a -> m a Source #
defaultReadWriteMutateM :: (MonadRead m v, MonadWrite m v) => v a -> (a -> m (a, b)) -> m b Source #
Default mutateM for MonadRead and MonadWrite entities.
defaultReadWriteMutateM_ :: (MonadRead m v, MonadWrite m v) => v a -> (a -> m a) -> m () Source #
Default mutateM_ for MonadRead and MonadWrite entities.
defaultReadWriteMutate :: (MonadRead m v, MonadWrite m v) => v a -> (a -> (a, b)) -> m b Source #
Default mutate for MonadRead and MonadWrite entities.
defaultReadWriteMutate_ :: (MonadRead m v, MonadWrite m v) => v a -> (a -> a) -> m () Source #
Default mutate_ for MonadRead and MonadWrite entities.
defaultLockUnsafeMutateM :: MonadLock m v => v a -> (a -> m (a, b)) -> m b Source #
defaultLockUnsafeMutateM_ :: MonadLock m v => v a -> (a -> m a) -> m () Source #
defaultLockUnsafeMutate :: MonadLock m v => v a -> (a -> (a, b)) -> m b Source #
defaultLockUnsafeMutate_ :: MonadLock m v => v a -> (a -> a) -> m () Source #
defaultLockIOMutateM :: MonadLock IO v => v a -> (a -> IO (a, b)) -> IO b Source #
Default mutateM for 'MonadLock IO' entities.
defaultLockIOMutateM_ :: MonadLock IO v => v a -> (a -> IO a) -> IO () Source #
Default mutateM_ for 'MonadLock IO' entities
postMutateM :: MonadMutateM m n v => v a -> (a -> m (a, b)) -> n (a, b) Source #
Monadically mutate a variable and also return its old value along with an additional value.
preMutateM :: MonadMutateM m n v => v a -> (a -> m (a, b)) -> n (a, b) Source #
Monadically mutate a variable and also return its new value along with an additional value.
postMutateM_ :: MonadMutateM m n v => v a -> (a -> m a) -> n a Source #
Monadically mutate a variable and also return its old value.
preMutateM_ :: MonadMutateM m n v => v a -> (a -> m a) -> n a Source #
Monadically mutate a variable and also return its new value.
postMutate :: MonadMutate m v => v a -> (a -> (a, b)) -> m (a, b) Source #
Mutate a variable and also return its old value along with an additional value.
preMutate :: MonadMutate m v => v a -> (a -> (a, b)) -> m (a, b) Source #
Mutate a variable and also return its new value along with an additional value.
postMutate_ :: MonadMutate m v => v a -> (a -> a) -> m a Source #
Mutate a variable and also return its old value.
preMutate_ :: MonadMutate m v => v a -> (a -> a) -> m a Source #
Mutate a variable and also return its new value.