MonadRandom 0.1.8 → 0.1.9
raw patch · 3 files changed
+48/−26 lines, 3 filesdep +transformersdep ~mtlPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers
Dependency ranges changed: mtl
API changes (from Hackage documentation)
+ Control.Monad.Random: instance MonadRandom m => MonadRandom (MaybeT m)
+ Control.Monad.Random: instance MonadSplit g m => MonadSplit g (MaybeT m)
Files
- CHANGES.markdown +4/−0
- Control/Monad/Random.hs +24/−13
- MonadRandom.cabal +20/−13
+ CHANGES.markdown view
@@ -0,0 +1,4 @@+0.1.9 (26 April 2013)+---------------------++ - add MonadRandom and MonadSplit instances for MaybeT
Control/Monad/Random.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS -fno-warn-orphans #-} {- |@@ -40,17 +41,18 @@ -- $RandExample ) where -import System.Random-import Control.Monad()-import Control.Monad.Error-import Control.Monad.Identity-import Control.Monad.Random.Class-import Control.Monad.Reader-import Control.Monad.State-import Control.Monad.Trans()-import Control.Monad.Writer-import Control.Arrow-import Control.Applicative+import Control.Applicative+import Control.Arrow+import Control.Monad ()+import Control.Monad.Error+import Control.Monad.Identity+import Control.Monad.Random.Class+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Trans ()+import Control.Monad.Trans.Maybe+import Control.Monad.Writer+import System.Random -- | A monad transformer which adds a random number generator to an -- existing monad.@@ -144,6 +146,12 @@ getRandoms = lift getRandoms getRandomRs = lift . getRandomRs +instance (MonadRandom m) => MonadRandom (MaybeT m) where+ getRandom = lift getRandom+ getRandomR = lift . getRandomR+ getRandoms = lift getRandoms+ getRandomRs = lift . getRandomRs+ instance (MonadSplit g m) => MonadSplit g (StateT s m) where getSplit = lift getSplit @@ -154,6 +162,9 @@ getSplit = lift getSplit instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m) where+ getSplit = lift getSplit++instance (MonadSplit g m) => MonadSplit g (MaybeT m) where getSplit = lift getSplit instance (MonadState s m, RandomGen g) => MonadState s (RandT g m) where
MonadRandom.cabal view
@@ -1,13 +1,20 @@-Name: MonadRandom-Build-type: Simple-Version: 0.1.8-Synopsis: Random-number generation monad.-Description: Support for computations which consume random values.-License: OtherLicense-License-file: LICENSE-Category: Control-Author: Cale Gibbard and others-Maintainer: -Stability: experimental-Build-Depends: base >=2 && < 5, mtl, random-Exposed-modules: Control.Monad.Random.Class, Control.Monad.Random+name: MonadRandom+version: 0.1.9+synopsis: Random-number generation monad.+description: Support for computations which consume random values.+license: OtherLicense+license-file: LICENSE+author: Cale Gibbard and others+maintainer: Brent Yorgey <byorgey@gmail.com>+bug-reports: https://github.com/byorgey/MonadRandom/issues+category: Control+build-type: Simple+cabal-version: >=1.8+extra-source-files: CHANGES.markdown+source-repository head+ type: git+ location: git://github.com/byorgey/MonadRandom.git++library+ exposed-modules: Control.Monad.Random, Control.Monad.Random.Class+ build-depends: base >= 2 && < 5, transformers, mtl, random