| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
Synopsis | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
Main data type | |||||||||||||||||||||||||||||||||||||
data UniqSupply | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||
data UniqSM result | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
class Monad m => MonadUnique m where | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||
lazyMapUs :: (a -> UniqSM b) -> [a] -> UniqSM [b] | |||||||||||||||||||||||||||||||||||||
Deprecated operations on UniqSM | |||||||||||||||||||||||||||||||||||||
getUniqueUs :: UniqSM Unique | |||||||||||||||||||||||||||||||||||||
getUs :: UniqSM UniqSupply | |||||||||||||||||||||||||||||||||||||
returnUs :: a -> UniqSM a | |||||||||||||||||||||||||||||||||||||
thenUs :: UniqSM a -> (a -> UniqSM b) -> UniqSM b | |||||||||||||||||||||||||||||||||||||
mapUs :: (a -> UniqSM b) -> [a] -> UniqSM [b] | |||||||||||||||||||||||||||||||||||||
Produced by Haddock version 2.3.0 |