pads-haskell-0.1.0.0: PADS data description language for Haskell.

Safe HaskellNone
LanguageHaskell2010

Language.Pads.Generation

Synopsis

Documentation

newtype PadsGen st a Source #

A custom application of the ReaderT monad, allowing threaded access to a random generator, supplied when the generation function is called at top level (i.e. via runPadsGen)

Constructors

PadsGen 

Fields

Instances
Monad (PadsGen st) Source # 
Instance details

Defined in Language.Pads.Generation

Methods

(>>=) :: PadsGen st a -> (a -> PadsGen st b) -> PadsGen st b #

(>>) :: PadsGen st a -> PadsGen st b -> PadsGen st b #

return :: a -> PadsGen st a #

fail :: String -> PadsGen st a #

Functor (PadsGen st) Source # 
Instance details

Defined in Language.Pads.Generation

Methods

fmap :: (a -> b) -> PadsGen st a -> PadsGen st b #

(<$) :: a -> PadsGen st b -> PadsGen st a #

Applicative (PadsGen st) Source # 
Instance details

Defined in Language.Pads.Generation

Methods

pure :: a -> PadsGen st a #

(<*>) :: PadsGen st (a -> b) -> PadsGen st a -> PadsGen st b #

liftA2 :: (a -> b -> c) -> PadsGen st a -> PadsGen st b -> PadsGen st c #

(*>) :: PadsGen st a -> PadsGen st b -> PadsGen st b #

(<*) :: PadsGen st a -> PadsGen st b -> PadsGen st a #

MonadIO (PadsGen st) Source # 
Instance details

Defined in Language.Pads.Generation

Methods

liftIO :: IO a -> PadsGen st a #

MonadState (Gen RealWorld, st) (PadsGen st) Source # 
Instance details

Defined in Language.Pads.Generation

Methods

get :: PadsGen st (Gen RealWorld, st) #

put :: (Gen RealWorld, st) -> PadsGen st () #

state :: ((Gen RealWorld, st) -> (a, (Gen RealWorld, st))) -> PadsGen st a #

askGen :: MonadState (GenIO, st) (PadsGen st) => (GenIO -> PadsGen st a) -> PadsGen st a Source #

runPadsGenSt :: st -> PadsGen st a -> IO a Source #

Provides the requisite random number generator to the supplied generation computation and returns the result as a value in IO. Initial generator state must be given.

getState :: PadsGen st st Source #

Pull user-level state out of the generator (ignore the random seed).

putState :: st -> PadsGen st () Source #

Put user-level state intothe generator (carrying over the random seed).

runPadsGen :: PadsGen () a -> IO a Source #

Delegates to 'runPadsGen\''

randNum :: Variate a => PadsGen st a Source #

The types 'randNum'/'randNumBound'/'randNumBetween' return are dictated by the types of their callers.

randNumBetween :: (Integral a, Variate a) => a -> a -> PadsGen st a Source #

A number with bounds i and j

randNumBound :: (Integral a, Variate a) => a -> PadsGen st a Source #

A number with an upper bound i

randInteger :: PadsGen st Integer Source #

As they aren't members of the System.Random.MWC class Variate, Integers require special treatment - convert them from doubles.

randIntegerBound :: Integral a => a -> PadsGen st Integer Source #

See randInteger

randElem :: [a] -> PadsGen st a Source #

Choose an element from a list at random

randLetter :: PadsGen st Char Source #

A random letter from English upper and lowercase letters

randLetterExcluding :: Char -> PadsGen st Char Source #

A random letter from English upper and lowercase letters, excluding the provided character

randList :: PadsGen st a -> Maybe Int -> PadsGen st [a] Source #

A list of random length, provided a PadsGen generator. Optionally also paramaterized by an Int, which if provided will be the length of the list

untilM :: Monad m => (a -> Bool) -> (a -> m a) -> Integer -> a -> m a Source #

Provided a predicate, function that transforms a seed value, recursion limit, and seed value, generates a value of the seed's type that satisfies the predicate

randWithConstraint :: PadsGen st a -> (a -> Bool) -> PadsGen st a Source #

A random instance of the provided PadsGen that satisfies the provided constraint