Copyright 2006-2007 Cale Gibbard, Russell O'Connor, Dan Doel, Remi Turk, Eric Kidd. OtherLicense experimental non-portable (multi-parameter type classes, undecidable instances) Safe Haskell2010

Description

Instances of this type class include Rand and monads created using RandT.

Synopsis

# Documentation

An interface to random number generation monads.

Minimal complete definition

Methods

getRandom :: Random a => m a Source #

Return a randomly-selected value of type a. See random for details.

getRandoms :: Random a => m [a] Source #

Return an infinite stream of random values of type a. See randoms for details.

getRandomR :: Random a => (a, a) -> m a Source #

Return a randomly-selected value of type a in the range [lo,hi]. See randomR for details.

getRandomRs :: Random a => (a, a) -> m [a] Source #

Return an infinite stream of randomly-selected value of type a in the range [lo,hi]. See randomRs for details.

Instances

 (Monad m, RandomGen g) => MonadRandom (RandT g m) Source # MethodsgetRandom :: Random a => RandT g m a Source #getRandoms :: Random a => RandT g m [a] Source #getRandomR :: Random a => (a, a) -> RandT g m a Source #getRandomRs :: Random a => (a, a) -> RandT g m [a] Source #

getRandom :: (MonadRandom m, Random a) => m a Source #

Return a randomly-selected value of type a. See random for details.

getRandomR :: (MonadRandom m, Random a) => (a, a) -> m a Source #

Return a randomly-selected value of type a in the range [lo,hi]. See randomR for details.

getRandoms :: (MonadRandom m, Random a) => m [a] Source #

Return an infinite stream of random values of type a. See randoms for details.

getRandomRs :: (MonadRandom m, Random a) => (a, a) -> m [a] Source #

Return an infinite stream of randomly-selected value of type a in the range [lo,hi]. See randomRs for details.

class Monad m => MonadSplit s m | m -> s where Source #

An interface to monads with splittable state (as most random number generation monads will have). The intention is that the getSplit action splits the state, returning one half of the result, and setting the new state to the other.

Minimal complete definition

getSplit

Methods

getSplit :: m s Source #

Instances

 (Monad m, RandomGen g) => MonadSplit g (RandT g m) Source # MethodsgetSplit :: RandT g m g Source #

getSplit :: MonadSplit s m => m s Source #