1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
{-# LANGUAGE Safe #-}
{- |
Module : Control.Monad.Random.Lazy
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)
Random monads that are lazy in the generator state. For a strict
version, see "Control.Monad.Random.Strict", which has the same
interface.
-}
module Control.Monad.Random.Lazy
( -- * The Rand monad
Rand,
liftRand,
runRand,
evalRand,
execRand,
mapRand,
withRand,
evalRandIO,
-- * The RandT monad transformer
RandT,
liftRandT,
runRandT,
evalRandT,
execRandT,
mapRandT,
withRandT,
evalRandTIO,
-- * Some convenience re-exports
module System.Random,
module Control.Monad.Random.Class,
module Control.Monad,
module Control.Monad.Fix,
module Control.Monad.Trans,
) where
import System.Random hiding (uniform, uniformR)
import Control.Monad.Random.Class
import Control.Monad.Trans
import Control.Monad.Trans.Random.Lazy (Rand, RandT, evalRand,
evalRandIO, evalRandT,
evalRandTIO, execRand,
execRandT, liftRand,
liftRandT, mapRand, mapRandT,
runRand, runRandT, withRand,
withRandT)
import Control.Monad
import Control.Monad.Fix
|