{-# LANGUAGE MultiParamTypeClasses, UndecidableInstances, FunctionalDependencies #-}
module Control.Monad.Random.Class (
MonadRandom,
getRandom,
getRandomR,
getRandoms,
getRandomRs,
MonadSplit,
getSplit
) where
import System.Random
class (Monad m) => MonadRandom m where
getRandom :: (Random a) => m a
getRandoms :: (Random a) => m [a]
getRandomR :: (Random a) => (a,a) -> m a
getRandomRs :: (Random a) => (a,a) -> m [a]
class (Monad m) => MonadSplit s m | m -> s where
getSplit :: m s