packages feed

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