Copyright | (c) Brent Yorgey 2016 |
---|---|
License | BSD3 (see LICENSE) |
Maintainer | byorgey@gmail.com |
Stability | experimental |
Portability | non-portable (multi-param classes, functional dependencies, undecidable instances) |
Safe Haskell | Safe |
Language | Haskell2010 |
Control.Monad.Random.Lazy
Description
Random monads that are lazy in the generator state. For a strict version, see Control.Monad.Random.Strict, which has the same interface.
Synopsis
- type Rand g = RandT g Identity
- liftRand :: (g -> (a, g)) -> Rand g a
- runRand :: Rand g a -> g -> (a, g)
- evalRand :: Rand g a -> g -> a
- execRand :: Rand g a -> g -> g
- mapRand :: ((a, g) -> (b, g)) -> Rand g a -> Rand g b
- withRand :: (g -> g) -> Rand g a -> Rand g a
- evalRandIO :: Rand StdGen a -> IO a
- data RandT g m a
- liftRandT :: (g -> m (a, g)) -> RandT g m a
- runRandT :: RandT g m a -> g -> m (a, g)
- evalRandT :: Monad m => RandT g m a -> g -> m a
- execRandT :: Monad m => RandT g m a -> g -> m g
- mapRandT :: (m (a, g) -> n (b, g)) -> RandT g m a -> RandT g n b
- withRandT :: (g -> g) -> RandT g m a -> RandT g m a
- evalRandTIO :: MonadIO m => RandT StdGen m a -> m a
- class Uniform a
- class Finite a
- class UniformRange a
- data StdGen
- class RandomGen g where
- next :: g -> (Int, g)
- genWord8 :: g -> (Word8, g)
- genWord16 :: g -> (Word16, g)
- genWord32 :: g -> (Word32, g)
- genWord64 :: g -> (Word64, g)
- genWord32R :: Word32 -> g -> (Word32, g)
- genWord64R :: Word64 -> g -> (Word64, g)
- genShortByteString :: Int -> g -> (ShortByteString, g)
- genRange :: g -> (Int, Int)
- split :: g -> (g, g)
- class Random a where
- mkStdGen :: Int -> StdGen
- genByteString :: RandomGen g => Int -> g -> (ByteString, g)
- initStdGen :: MonadIO m => m StdGen
- setStdGen :: MonadIO m => StdGen -> m ()
- getStdGen :: MonadIO m => m StdGen
- newStdGen :: MonadIO m => m StdGen
- getStdRandom :: MonadIO m => (StdGen -> (a, StdGen)) -> m a
- randomRIO :: (Random a, MonadIO m) => (a, a) -> m a
- randomIO :: (Random a, MonadIO m) => m a
- module Control.Monad.Random.Class
- module Control.Monad
- module Control.Monad.Fix
- module Control.Monad.Trans
The Rand monad
Arguments
:: (g -> (a, g)) | pure random transformer |
-> Rand g a | equivalent generator-passing computation |
Construct a random monad computation from a function.
(The inverse of runRand
.)
Arguments
:: Rand g a | generator-passing computation to execute |
-> g | initial generator |
-> (a, g) | return value and final generator |
Unwrap a random monad computation as a function.
(The inverse of liftRand
.)
Arguments
:: Rand g a | generator-passing computation to execute |
-> g | initial generator |
-> a | return value of the random computation |
Arguments
:: Rand g a | generator-passing computation to execute |
-> g | initial generator |
-> g | final generator |
evalRandIO :: Rand StdGen a -> IO a Source #
Evaluate a random computation in the IO
monad, splitting the global
standard generator to get a new one for the computation.
The RandT monad transformer
A random transformer monad parameterized by:
g
- The generator.m
- The inner monad.
The return
function leaves the generator unchanged, while >>=
uses the
final generator of the first computation as the initial generator of the
second.
Instances
Arguments
:: (g -> m (a, g)) | impure random transformer |
-> RandT g m a | equivalent generator-passing computation |
Construct a random monad computation from an impure function.
(The inverse of runRandT
.)
Arguments
:: RandT g m a | generator-passing computation to execute |
-> g | initial generator |
-> m (a, g) | return value and final generator |
Unwrap a random monad computation as an impure function.
(The inverse of liftRandT
.)
evalRandTIO :: MonadIO m => RandT StdGen m a -> m a Source #
Evaluate a random computation that is embedded in the IO
monad,
splitting the global standard generator to get a new one for the
computation.
Some convenience re-exports
Instances
Instances
class UniformRange a #
Minimal complete definition
uniformRM
Instances
Instances
Show StdGen | |
NFData StdGen | |
Defined in System.Random.Internal | |
Eq StdGen | |
RandomGen StdGen | |
Defined in System.Random.Internal Methods next :: StdGen -> (Int, StdGen) # genWord8 :: StdGen -> (Word8, StdGen) # genWord16 :: StdGen -> (Word16, StdGen) # genWord32 :: StdGen -> (Word32, StdGen) # genWord64 :: StdGen -> (Word64, StdGen) # genWord32R :: Word32 -> StdGen -> (Word32, StdGen) # genWord64R :: Word64 -> StdGen -> (Word64, StdGen) # genShortByteString :: Int -> StdGen -> (ShortByteString, StdGen) # | |
MonadSplit StdGen IO Source # | |
Methods
genWord16 :: g -> (Word16, g) #
genWord32 :: g -> (Word32, g) #
genWord64 :: g -> (Word64, g) #
genWord32R :: Word32 -> g -> (Word32, g) #
genWord64R :: Word64 -> g -> (Word64, g) #
genShortByteString :: Int -> g -> (ShortByteString, g) #
Instances
RandomGen StdGen | |
Defined in System.Random.Internal Methods next :: StdGen -> (Int, StdGen) # genWord8 :: StdGen -> (Word8, StdGen) # genWord16 :: StdGen -> (Word16, StdGen) # genWord32 :: StdGen -> (Word32, StdGen) # genWord64 :: StdGen -> (Word64, StdGen) # genWord32R :: Word32 -> StdGen -> (Word32, StdGen) # genWord64R :: Word64 -> StdGen -> (Word64, StdGen) # genShortByteString :: Int -> StdGen -> (ShortByteString, StdGen) # | |
RandomGen SMGen | |
Defined in System.Random.Internal Methods next :: SMGen -> (Int, SMGen) # genWord8 :: SMGen -> (Word8, SMGen) # genWord16 :: SMGen -> (Word16, SMGen) # genWord32 :: SMGen -> (Word32, SMGen) # genWord64 :: SMGen -> (Word64, SMGen) # genWord32R :: Word32 -> SMGen -> (Word32, SMGen) # genWord64R :: Word64 -> SMGen -> (Word64, SMGen) # genShortByteString :: Int -> SMGen -> (ShortByteString, SMGen) # | |
RandomGen SMGen | |
Defined in System.Random.Internal Methods next :: SMGen -> (Int, SMGen) # genWord8 :: SMGen -> (Word8, SMGen) # genWord16 :: SMGen -> (Word16, SMGen) # genWord32 :: SMGen -> (Word32, SMGen) # genWord64 :: SMGen -> (Word64, SMGen) # genWord32R :: Word32 -> SMGen -> (Word32, SMGen) # genWord64R :: Word64 -> SMGen -> (Word64, SMGen) # genShortByteString :: Int -> SMGen -> (ShortByteString, SMGen) # | |
RandomGen g => RandomGen (StateGen g) | |
Defined in System.Random.Internal Methods next :: StateGen g -> (Int, StateGen g) # genWord8 :: StateGen g -> (Word8, StateGen g) # genWord16 :: StateGen g -> (Word16, StateGen g) # genWord32 :: StateGen g -> (Word32, StateGen g) # genWord64 :: StateGen g -> (Word64, StateGen g) # genWord32R :: Word32 -> StateGen g -> (Word32, StateGen g) # genWord64R :: Word64 -> StateGen g -> (Word64, StateGen g) # genShortByteString :: Int -> StateGen g -> (ShortByteString, StateGen g) # | |
RandomGen g => RandomGen (AtomicGen g) | |
Defined in System.Random.Stateful Methods next :: AtomicGen g -> (Int, AtomicGen g) # genWord8 :: AtomicGen g -> (Word8, AtomicGen g) # genWord16 :: AtomicGen g -> (Word16, AtomicGen g) # genWord32 :: AtomicGen g -> (Word32, AtomicGen g) # genWord64 :: AtomicGen g -> (Word64, AtomicGen g) # genWord32R :: Word32 -> AtomicGen g -> (Word32, AtomicGen g) # genWord64R :: Word64 -> AtomicGen g -> (Word64, AtomicGen g) # genShortByteString :: Int -> AtomicGen g -> (ShortByteString, AtomicGen g) # | |
RandomGen g => RandomGen (IOGen g) | |
Defined in System.Random.Stateful Methods next :: IOGen g -> (Int, IOGen g) # genWord8 :: IOGen g -> (Word8, IOGen g) # genWord16 :: IOGen g -> (Word16, IOGen g) # genWord32 :: IOGen g -> (Word32, IOGen g) # genWord64 :: IOGen g -> (Word64, IOGen g) # genWord32R :: Word32 -> IOGen g -> (Word32, IOGen g) # genWord64R :: Word64 -> IOGen g -> (Word64, IOGen g) # genShortByteString :: Int -> IOGen g -> (ShortByteString, IOGen g) # | |
RandomGen g => RandomGen (STGen g) | |
Defined in System.Random.Stateful Methods next :: STGen g -> (Int, STGen g) # genWord8 :: STGen g -> (Word8, STGen g) # genWord16 :: STGen g -> (Word16, STGen g) # genWord32 :: STGen g -> (Word32, STGen g) # genWord64 :: STGen g -> (Word64, STGen g) # genWord32R :: Word32 -> STGen g -> (Word32, STGen g) # genWord64R :: Word64 -> STGen g -> (Word64, STGen g) # genShortByteString :: Int -> STGen g -> (ShortByteString, STGen g) # | |
RandomGen g => RandomGen (TGen g) | |
Defined in System.Random.Stateful Methods next :: TGen g -> (Int, TGen g) # genWord8 :: TGen g -> (Word8, TGen g) # genWord16 :: TGen g -> (Word16, TGen g) # genWord32 :: TGen g -> (Word32, TGen g) # genWord64 :: TGen g -> (Word64, TGen g) # genWord32R :: Word32 -> TGen g -> (Word32, TGen g) # genWord64R :: Word64 -> TGen g -> (Word64, TGen g) # genShortByteString :: Int -> TGen g -> (ShortByteString, TGen g) # |
Minimal complete definition
Nothing
Methods
randomR :: RandomGen g => (a, a) -> g -> (a, g) #
random :: RandomGen g => g -> (a, g) #
Instances
genByteString :: RandomGen g => Int -> g -> (ByteString, g) #
initStdGen :: MonadIO m => m StdGen #
getStdRandom :: MonadIO m => (StdGen -> (a, StdGen)) -> m a #
module Control.Monad.Random.Class
module Control.Monad
module Control.Monad.Fix
module Control.Monad.Trans