MonadRandom-0.5.1: Control/Monad/Random/Strict.hs
{-# LANGUAGE Safe #-}
{- |
Module : Control.Monad.Random.Strict
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 strict in the generator state. For a lazy
version, see "Control.Monad.Random.Lazy", which has the same
interface.
-}
module Control.Monad.Random.Strict
( -- * The Rand monad transformer
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
import Control.Monad.Random.Class
import Control.Monad.Trans
import Control.Monad.Trans.Random.Strict (Rand, RandT, evalRand,
evalRandIO, evalRandT,
evalRandTIO, execRand,
execRandT, liftRand,
liftRandT, mapRand,
mapRandT, runRand, runRandT,
withRand, withRandT)
import Control.Monad
import Control.Monad.Fix