| Safe Haskell | None |
|---|
UniqSupply
Contents
- data UniqSupply
- uniqFromSupply :: UniqSupply -> Unique
- uniqsFromSupply :: UniqSupply -> [Unique]
- takeUniqFromSupply :: UniqSupply -> (Unique, UniqSupply)
- mkSplitUniqSupply :: Char -> IO UniqSupply
- splitUniqSupply :: UniqSupply -> (UniqSupply, UniqSupply)
- listSplitUniqSupply :: UniqSupply -> [UniqSupply]
- data UniqSM result
- class Monad m => MonadUnique m where
- getUniqueSupplyM :: m UniqSupply
- getUniqueM :: m Unique
- getUniquesM :: m [Unique]
- initUs :: UniqSupply -> UniqSM a -> (a, UniqSupply)
- initUs_ :: UniqSupply -> UniqSM a -> a
- lazyThenUs :: UniqSM a -> (a -> UniqSM b) -> UniqSM b
- lazyMapUs :: (a -> UniqSM b) -> [a] -> UniqSM [b]
- getUniqueUs :: UniqSM Unique
- getUs :: UniqSM UniqSupply
Main data type
data UniqSupply
A value of type UniqSupply is unique, and it can
supply one distinct Unique. Also, from the supply, one can
also manufacture an arbitrary number of further UniqueSupply values,
which will be distinct from the first and from all others.
Operations on supplies
uniqFromSupply :: UniqSupply -> Unique
Obtain the Unique from this particular UniqSupply
uniqsFromSupply :: UniqSupply -> [Unique]
Obtain an infinite list of Unique that can be generated by constant splitting of the supply
takeUniqFromSupply :: UniqSupply -> (Unique, UniqSupply)
Obtain the Unique from this particular UniqSupply, and a new supply
mkSplitUniqSupply :: Char -> IO UniqSupply
Create a unique supply out of thin air. The character given must be distinct from those of all calls to this function in the compiler for the values generated to be truly unique.
splitUniqSupply :: UniqSupply -> (UniqSupply, UniqSupply)
Build two UniqSupply from a single one, each of which
can supply its own Unique.
listSplitUniqSupply :: UniqSupply -> [UniqSupply]
Create an infinite list of UniqSupply from a single one
Unique supply monad and its abstraction
class Monad m => MonadUnique m where
A monad for generating unique identifiers
Methods
getUniqueSupplyM :: m UniqSupply
Get a new UniqueSupply
getUniqueM :: m Unique
Get a new unique identifier
getUniquesM :: m [Unique]
Get an infinite list of new unique identifiers
Instances
| MonadUnique UniqSM | |
| MonadUnique CoreM | |
| MonadUnique SimplM | |
| MonadUnique (IOEnv (Env gbl lcl)) |
Operations on the monad
initUs :: UniqSupply -> UniqSM a -> (a, UniqSupply)
Run the UniqSM action, returning the final UniqSupply
initUs_ :: UniqSupply -> UniqSM a -> a
Run the UniqSM action, discarding the final UniqSupply
lazyThenUs :: UniqSM a -> (a -> UniqSM b) -> UniqSM b