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

Safe HaskellSafe-Inferred

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) 

class Monad m => MonadGen e m | m -> e whereSource

The MTL style class for generating fresh values

Methods

gen :: m eSource

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 aSource

runGen :: e -> Gen e a -> aSource

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

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