monad-gen-0.1.0.0: A simple monad for generating fresh integers

Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Gen

Synopsis

Documentation

data GenT e m a Source

The monad transformer for generating fresh values.

Instances

MonadReader r m => MonadReader r (GenT e m) 
MonadState s m => MonadState s (GenT e m) 
MonadWriter w m => MonadWriter w (GenT e m) 
(Monad m, Enum e) => MonadGen e (GenT e m) 
MonadTrans (GenT e) 
Monad m => Monad (GenT e m) 
Functor m => Functor (GenT e m) 
(Functor f, Monad f) => Applicative (GenT e f) 

type Gen e = GenT e Identity Source

class Monad m => MonadGen e m | m -> e where Source

The MTL style class for generating fresh values

Methods

gen :: m e Source

Generate a fresh value e, gen should never produce the same value within a monadic computation.

Instances

MonadGen e m => MonadGen e (MaybeT m) 
MonadGen e m => MonadGen e (ListT m) 
MonadGen e m => MonadGen e (IdentityT m) 
(MonadGen e m, Error err) => MonadGen e (ErrorT err m) 
(MonadGen e m, Monoid s) => MonadGen e (WriterT s m) 
MonadGen e m => MonadGen e (ReaderT s m) 
MonadGen e m => MonadGen e (StateT s m) 
(Monad m, Enum e) => MonadGen e (GenT e m) 

runGenT :: Monad m => e -> GenT e m a -> m a Source

runGen :: e -> Gen e a -> a Source

runGenTInt :: Monad m => GenT Integer m a -> m a Source

A shortcut for the common case where we want fresh Integers.