monad-gen-0.3.0.1: A simple monad for generating fresh integers
Safe HaskellSafe
LanguageHaskell2010

Control.Monad.Gen

Synopsis

Documentation

data GenT e m a Source #

The monad transformer for generating fresh values.

Instances

Instances details
MonadError e m => MonadError e (GenT e' m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

throwError :: e -> GenT e' m a

catchError :: GenT e' m a -> (e -> GenT e' m a) -> GenT e' m a

MonadReader r m => MonadReader r (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

ask :: GenT e m r

local :: (r -> r) -> GenT e m a -> GenT e m a

reader :: (r -> a) -> GenT e m a

MonadState s m => MonadState s (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

get :: GenT e m s

put :: s -> GenT e m ()

state :: (s -> (a, s)) -> GenT e m a

MonadWriter w m => MonadWriter w (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

writer :: (a, w) -> GenT e m a

tell :: w -> GenT e m ()

listen :: GenT e m a -> GenT e m (a, w)

pass :: GenT e m (a, w -> w) -> GenT e m a

Monad m => MonadGen e (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

gen :: GenT e m e Source #

MonadTrans (GenT e) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

lift :: Monad m => m a -> GenT e m a

Monad m => Monad (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

(>>=) :: GenT e m a -> (a -> GenT e m b) -> GenT e m b

(>>) :: GenT e m a -> GenT e m b -> GenT e m b

return :: a -> GenT e m a

Functor m => Functor (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

fmap :: (a -> b) -> GenT e m a -> GenT e m b

(<$) :: a -> GenT e m b -> GenT e m a

MonadFix m => MonadFix (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

mfix :: (a -> GenT e m a) -> GenT e m a

(Functor f, Monad f) => Applicative (GenT e f) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

pure :: a -> GenT e f a

(<*>) :: GenT e f (a -> b) -> GenT e f a -> GenT e f b

liftA2 :: (a -> b -> c) -> GenT e f a -> GenT e f b -> GenT e f c

(*>) :: GenT e f a -> GenT e f b -> GenT e f b

(<*) :: GenT e f a -> GenT e f b -> GenT e f a

MonadIO m => MonadIO (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

liftIO :: IO a -> GenT e m a

MonadPlus m => MonadPlus (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

mzero :: GenT e m a

mplus :: GenT e m a -> GenT e m a -> GenT e m a

MonadCont m => MonadCont (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

callCC :: ((a -> GenT e m b) -> GenT e m a) -> GenT e m a

(Monad m, Functor m, MonadPlus m) => Alternative (GenT e m) Source # 
Instance details

Defined in Control.Monad.Gen

Methods

empty :: GenT e m a

(<|>) :: GenT e m a -> GenT e m a -> GenT e m a

some :: GenT e m a -> GenT e m [a]

many :: GenT e m a -> GenT e m [a]

type Gen e = GenT e Identity Source #

successor :: (e -> e) -> Successor e Source #

runGenT :: (Enum e, Monad m) => GenT e m a -> m a Source #

Run a GenT computation starting from the value toEnum 0

runGen :: Enum e => Gen e a -> a Source #

Run a Gen computation starting from the value toEnum 0

runGenTWith :: Monad m => Successor e -> e -> GenT e m a -> m a Source #

Run a GenT computation starting from a specific value e with a the next fresh value determined by Successor e.

runGenWith :: Successor e -> e -> Gen e a -> a Source #

Run a GenT computation starting from a specific value e with a the next fresh value determined by Successor e.

runGenTFrom :: (Monad m, Enum e) => e -> GenT e m a -> m a Source #

Run a GenT computation starting from a specific value e.

runGenFrom :: Enum e => e -> Gen e a -> a Source #

Run a Gen computation starting from a specific value e.