{-# 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