| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Reflex.Monad.Supply
- data SupplyT s m a
- type Supply s a = SupplyT s Identity a
- class Splitable s i | s -> i where
- freshId :: s -> (i, s)
- splitSupply :: s -> (s, s)
- runSupplyT :: Monad m => SupplyT s m a -> s -> m (a, s)
- evalSupplyT :: Monad m => SupplyT s m a -> s -> m a
- runSupply :: Supply s a -> s -> (a, s)
- evalSupply :: Supply s a -> s -> a
- runSplit :: (Monad m, Splitable s i) => SupplyT s m a -> Supply s (m a)
- getFresh :: (Monad m, Splitable s i) => SupplyT s m i
- getSplit :: (Monad m, Splitable s i) => SupplyT s m s
Documentation
ID Supply transformer for switchable reflex stacks over splittable ID supplies Fresh variables are obtained using getFresh. Admits a MonadSwitch instance.
Instances
| MonadState st m => MonadState st (SupplyT s m) Source | |
| MonadReader st m => MonadReader st (SupplyT s m) Source | |
| MonadWriter w m => MonadWriter w (SupplyT s m) Source | |
| MonadSample t m => MonadSample t (SupplyT s m) Source | |
| MonadHold t m => MonadHold t (SupplyT s m) Source | |
| (MonadSwitch t m, Splitable s i) => MonadSwitch t (SupplyT s m) Source | |
| MonadTrans (SupplyT s) Source | |
| Monad m => Monad (SupplyT s m) Source | |
| Functor m => Functor (SupplyT s m) Source | |
| MonadFix m => MonadFix (SupplyT s m) Source | |
| Monad m => Applicative (SupplyT s m) Source |
class Splitable s i | s -> i where Source
Abstraction for splittable identifier supplies, priovided is an instance for Enum a => [a]
but a more efficient supply would be for example, found in the concurrent-supply package.
at the cost of determinism.
Two parameters, a state s and an identifier type i
runSupplyT :: Monad m => SupplyT s m a -> s -> m (a, s) Source
Run a SupplyT with a Spittable state
evalSupplyT :: Monad m => SupplyT s m a -> s -> m a Source
evalSupply :: Supply s a -> s -> a Source