MonadRandom 0.1.10 → 0.1.11
raw patch · 3 files changed
+19/−11 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Control.Monad.Random: instance (MonadReader r m, RandomGen g) => MonadReader r (RandT g m)
- Control.Monad.Random: instance (MonadWriter w m, RandomGen g, Monoid w) => MonadWriter w (RandT g m)
+ Control.Monad.Random: instance MonadRandom m => MonadRandom (IdentityT m)
+ Control.Monad.Random: instance MonadReader r m => MonadReader r (RandT g m)
+ Control.Monad.Random: instance MonadSplit g m => MonadSplit g (IdentityT m)
+ Control.Monad.Random: instance MonadWriter w m => MonadWriter w (RandT g m)
Files
- CHANGES.markdown +7/−0
- Control/Monad/Random.hs +11/−10
- MonadRandom.cabal +1/−1
CHANGES.markdown view
@@ -1,3 +1,10 @@+0.1.11 (1 August 2013)+----------------------++ - add MonadRandom and MonadSplit instances for IdentityT+ - derive MonadReader and MonadWriter instances instead of declaring+ them explicitly (thanks again to James Koppel)+ 0.1.10 (16 July 2013) ---------------------
Control/Monad/Random.hs view
@@ -51,6 +51,7 @@ import Control.Monad.Reader import Control.Monad.State import Control.Monad.Trans ()+import Control.Monad.Trans.Identity import Control.Monad.Trans.Maybe import Control.Monad.Writer import System.Random@@ -58,7 +59,7 @@ -- | A monad transformer which adds a random number generator to an -- existing monad. newtype RandT g m a = RandT (StateT g m a)- deriving (Functor, Monad, MonadTrans, MonadIO, MonadFix)+ deriving (Functor, Monad, MonadTrans, MonadIO, MonadFix, MonadReader r, MonadWriter w) instance (Functor m,Monad m) => Applicative (RandT g m) where pure = return@@ -123,6 +124,12 @@ p <- liftM toRational $ getRandomR (0.0,s) return . fst . head $ dropWhile (\(_,q) -> q < p) cs +instance (MonadRandom m) => MonadRandom (IdentityT m) where+ getRandom = lift getRandom+ getRandomR = lift . getRandomR+ getRandoms = lift getRandoms+ getRandomRs = lift . getRandomRs+ instance (MonadRandom m) => MonadRandom (StateT s m) where getRandom = lift getRandom getRandomR = lift . getRandomR@@ -159,6 +166,9 @@ getRandoms = lift getRandoms getRandomRs = lift . getRandomRs +instance (MonadSplit g m) => MonadSplit g (IdentityT m) where+ getSplit = lift getSplit+ instance (MonadSplit g m) => MonadSplit g (StateT s m) where getSplit = lift getSplit @@ -180,15 +190,6 @@ instance (MonadState s m, RandomGen g) => MonadState s (RandT g m) where get = lift get put = lift . put--instance (MonadReader r m, RandomGen g) => MonadReader r (RandT g m) where- ask = lift ask- local f (RandT m) = RandT $ local f m--instance (MonadWriter w m, RandomGen g, Monoid w) => MonadWriter w (RandT g m) where- tell = lift . tell- listen (RandT m) = RandT $ listen m- pass (RandT m) = RandT $ pass m instance MonadRandom IO where getRandom = randomIO
MonadRandom.cabal view
@@ -1,5 +1,5 @@ name: MonadRandom-version: 0.1.10+version: 0.1.11 synopsis: Random-number generation monad. description: Support for computations which consume random values. license: OtherLicense