Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- class Monad m => MonadNew m v where
- new :: a -> m (v a)
- class (MonadRead m v, Monad m) => MonadLock m v where
- class Monad m => MonadRead m v where
- read :: v a -> m a
- class Monad m => MonadWrite m v where
- write :: v a -> a -> m ()
- class Monad m => MonadSwap m v where
- swap :: v a -> a -> m a
- class MonadWrite m v => MonadMutate_ m v where
- mutate_ :: v a -> (a -> a) -> m ()
- class (MonadRead m v, MonadMutate_ m v) => MonadMutate m v where
- mutate :: v a -> (a -> (a, b)) -> m b
- class MonadFoldMutate m v where
- foldMutate :: Monoid b => v a -> (a -> (a, b)) -> m b
- class MonadMutate_ m v => MonadMutateM_ f m v where
- mutateM_ :: v a -> (a -> f a) -> m ()
- class (MonadMutate m v, MonadMutateM_ f m v) => MonadMutateM f m v where
- mutateM :: v a -> (a -> f (a, b)) -> m b
- class MonadFoldMutateM m n v where
- foldMutateM :: Monoid b => v a -> (a -> m (a, b)) -> n b
Documentation
class Monad m => MonadNew m v where Source #
A type class for containers that can be created and initialized with a single value.
Instances
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.
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.
Instances
class Monad m => MonadWrite m v where Source #
A type class for containers to which a single value can be written.
Instances
MonadWrite IO TVar Source # | |
MonadWrite IO TMVar Source # | |
MonadIO m => MonadWrite m MVar Source # | |
Defined in MonadVar.Instances.MVar | |
MonadIO m => MonadWrite m IORef Source # | |
Defined in MonadVar.Instances.IORef | |
MonadWrite STM TVar Source # | |
MonadWrite STM TMVar 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).
swap :: v a -> a -> m a Source #
Replace a value from a container by a new one and return the original value.
Instances
class MonadWrite m v => MonadMutate_ m v where Source #
A type class for mutable containers which can be mapped over.
Instances
MonadMutate_ IO TMVar Source # | |
MonadIO m => MonadMutate_ m MVar Source # | |
Defined in MonadVar.Instances.MVar | |
MonadIO m => MonadMutate_ m IORef Source # | |
Defined in MonadVar.Instances.IORef | |
MonadMutate_ STM TVar Source # | |
MonadMutate_ STM TMVar Source # | |
MonadMutate_ (ST s) (STRef 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.
Instances
MonadMutate IO TMVar Source # | |
MonadIO m => MonadMutate m MVar Source # | |
Defined in MonadVar.Instances.MVar | |
MonadIO m => MonadMutate m IORef Source # | |
Defined in MonadVar.Instances.IORef | |
MonadMutate STM TVar Source # | |
MonadMutate STM TMVar Source # | |
MonadMutate (ST s) (STRef s) Source # | |
class MonadFoldMutate m v where Source #
A type class for mutable containers which can be mapped and folded over simultaneously.
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.
Instances
MonadMutateM_ IO IO TMVar Source # | |
STM ~ stm => MonadMutateM_ stm STM TVar Source # | |
STM ~ stm => MonadMutateM_ stm STM TMVar 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 (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.
mutateM :: v a -> (a -> f (a, b)) -> m b Source #
Monadically mutate a variable and return an additional value.
Instances
MonadMutateM IO IO TMVar Source # | |
STM ~ stm => MonadMutateM stm STM TVar Source # | |
STM ~ stm => MonadMutateM stm STM TMVar 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 MonadFoldMutateM m n v where Source #
A type class for mutable containers which can be monadically mapped and folded over simultaneously.
foldMutateM :: Monoid b => v a -> (a -> m (a, b)) -> n b Source #