Portability | portable |
---|---|
Stability | provisional |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | None |
This library can be used to generate values (for example, new names) without the need to thread state. This means that functions that need to generate new values only need a supply object as an argument, and they do not need to return a new supply object as a result. This decreases the number of data-dependencies in a program, which makes it easier to exploit parallelism.
The technique for generating new values is based on the paper ''On Generating Unique Names'' by Lennart Augustsson, Mikael Rittri, and Dan Synek.
Documentation
Functor Supply | |
Typeable1 Supply | |
Applicative Supply | |
Foldable Supply | |
Traversable Supply | |
Comonad Supply | |
Traversable1 Supply | |
Foldable1 Supply | |
Apply Supply | |
Extend Supply | |
Eq a => Eq (Supply a) | |
(Typeable (Supply a), Data a) => Data (Supply a) | |
(Eq (Supply a), Ord a) => Ord (Supply a) | |
Read a => Read (Supply a) | |
Show a => Show (Supply a) |
newEnumSupply :: Enum a => IO (Supply a)Source
newNumSupply :: Num a => IO (Supply a)Source
newDupableSupply :: (a -> a) -> a -> IO (Supply a)Source
newDupableEnumSupply :: Enum a => IO (Supply a)Source
newDupableNumSupply :: Num a => IO (Supply a)Source
leftSupply :: Supply a -> Supply aSource
rightSupply :: Supply a -> Supply aSource