{-# 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 hiding (uniform, uniformR) 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