StateT Random Generation

Run Settings
LanguageHaskell
Language Version
Run Command
import System.Random import Control.Monad.Trans import Control.Monad.Trans.State import Control.Monad.Identity import qualified Control.Monad.State as S type Eval a g = StateT (g Identity) a runEval :: (RandomGen g) => g -> StateT g Identity a -> (a, g) runEval g f = runIdentity $ runStateT f g rand :: (RandomGen g, Random a, S.MonadState g m) => a -> a -> m a rand lo hi = do g <- S.get let (i, g') = randomR (lo, hi) g S.put g' return i mrand :: (RandomGen g, Random a, S.MonadState g m) => a -> a -> m [a] mrand lo hi = replicateM 10 $ rand lo hi main :: IO () main = do g <- newStdGen print $ runEval g (mrand (1::Integer) (10::Integer))
Editor Settings
Theme
Key bindings
Full width
Lines