{-# 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 Control.Monad.Random.Class, module Control.Monad, module Control.Monad.Fix, module Control.Monad.Trans, ) where 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