|
Control.Comonad.Supply | Portability | portable | Stability | provisional | Maintainer | Edward Kmett <ekmett@gmail.com> |
|
|
|
|
|
Description |
The technique for generating new values is based on the paper
''On Generating Unique Names''
by Lennart Augustsson, Mikael Rittri, and Dan Synek.
Integrated from value-supply-0.1
TODO: a SupplyT Comonad Transformer
|
|
Synopsis |
|
|
|
Documentation |
|
module Control.Comonad |
|
Creating supplies
|
|
|
A type that can be used to generate values on demand.
A supply may be turned into two different supplies by using
the functions supplyLeft and supplyRight.
| Instances | |
|
|
|
Creates a new supply of values.
The arguments specify how to generate values:
the first argument is an initial value, the
second specifies how to generate a new value from an existing one.
|
|
|
A supply of values that are in the Enum class.
The initial value is toEnum 0, new values are generates with succ.
|
|
|
A supply of values that are in the Num class.
The initial value is 0, new values are generated by adding 1.
|
|
Obtaining values from supplies
|
|
|
Get the value of a supply. This function, together with
modifySupply forms a comonad on Supply.
|
|
Generating new supplies from old
|
|
|
Generate a new supply. This supply is different from the one
generated with supplyRight.
|
|
|
Generate a new supply. This supply is different from the one
generated with supplyLeft.
|
|
|
Generate a new supply by systematically applying a function
to an existing supply. This function, together with supplyValue
form a comonad on Supply.
|
|
|
Generate an infinite list of supplies by using supplyLeft and
supplyRight repeatedly.
|
|
|
Split a supply into two different supplies.
The resulting supplies are different from the input supply.
|
|
|
Split a supply into three different supplies.
|
|
|
Split a supply into four different supplies.
|
|
Produced by Haddock version 2.4.2 |