Safe Haskell | None |
---|

Support for computations which consume values from a (possibly infinite) supply. See http://www.haskell.org/haskellwiki/New_monads/MonadSupply for details.

- class Monad m => MonadSupply s m | m -> s where
- data SupplyT s m a
- data Supply s a
- evalSupplyT :: Monad m => SupplyT s m a -> [s] -> m a
- evalSupply :: Supply s a -> [s] -> a
- runSupplyT :: Monad m => SupplyT s m a -> [s] -> m (a, [s])
- runSupply :: Supply s a -> [s] -> (a, [s])
- supplies :: MonadSupply s m => Int -> m [s]

# Documentation

class Monad m => MonadSupply s m | m -> s whereSource

MonadSupply s (Supply s) | |

(Monoid w, MonadSupply s m) => MonadSupply s (WriterT w m) | |

MonadSupply s m => MonadSupply s (ReaderT r m) | |

MonadSupply s m => MonadSupply s (StateT st m) | |

(Error e, MonadSupply s m) => MonadSupply s (ErrorT e m) | |

Monad m => MonadSupply s (SupplyT s m) |

Supply monad transformer.

Supply monad.

MonadSupply s (Supply s) | |

Monad (Supply s) | |

Functor (Supply s) | |

Applicative (Supply s) | |

Monoid a => Monoid (Supply s a) | Monoid instance for the supply monad. Actually any monad/monoid pair gives rise to this monoid instance, but we can't write its type like that because it would conflict with existing instances provided by Data.Monoid. instance (Monoid a, Monad m) => Monoid (m a) where |

evalSupplyT :: Monad m => SupplyT s m a -> [s] -> m aSource

evalSupply :: Supply s a -> [s] -> aSource

runSupplyT :: Monad m => SupplyT s m a -> [s] -> m (a, [s])Source

supplies :: MonadSupply s m => Int -> m [s]Source

Get n supplies.