packages feed

MonadRandom 0.3.0.1 → 0.3.0.2

raw patch · 3 files changed

+21/−24 lines, 3 filesdep +transformers-compatPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependencies added: transformers-compat

API changes (from Hackage documentation)

+ Control.Monad.Random: instance (Error e, MonadRandom m) => MonadRandom (ErrorT e m)
+ Control.Monad.Random: instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m)

Files

CHANGES.markdown view
@@ -1,3 +1,8 @@+0.3.0.2 (30 March 2015)+-----------------------++  - Add transformers-compat to allow building with newer mtl+ 0.3.0.1 (24 November 2014) -------------------------- 
Control/Monad/Random.hs view
@@ -50,11 +50,7 @@ import           Control.Arrow import           Control.Monad                () import           Control.Monad.Cont-#if MIN_VERSION_transformers(0,4,0)-import           Control.Monad.Except-#else import           Control.Monad.Error-#endif import           Control.Monad.Identity import           Control.Monad.Random.Class import           Control.Monad.Reader@@ -64,6 +60,7 @@ import qualified Control.Monad.State.Lazy     as SL import qualified Control.Monad.State.Strict   as SS import           Control.Monad.Trans          ()+import           Control.Monad.Trans.Except import           Control.Monad.Trans.Identity import           Control.Monad.Trans.Maybe import           Control.Monad.Writer.Class@@ -81,12 +78,6 @@   pure = return   (<*>) = ap -liftState :: (MonadState s m) => (s -> (a,s)) -> m a-liftState t = do v <- get-                 let (x, v') = t v-                 put v'-                 return x- -- | Lift arbitrary action to RandT liftRandT :: (Monad m, RandomGen g) =>              (g -> m (a, g)) -- ^ action returning value and new generator state@@ -97,17 +88,17 @@ liftRand :: (RandomGen g) =>             (g -> (a, g)) -- ^ action returning value and new generator state             -> Rand g a-liftRand = RandT . liftState+liftRand = RandT . state  instance (Monad m, RandomGen g) => MonadRandom (RandT g m) where-    getRandom = RandT . liftState $ random-    getRandoms = RandT . liftState $ first randoms . split-    getRandomR (x,y) = RandT . liftState $ randomR (x,y)-    getRandomRs (x,y) = RandT . liftState $+    getRandom = RandT . state $ random+    getRandoms = RandT . state $ first randoms . split+    getRandomR (x,y) = RandT . state $ randomR (x,y)+    getRandomRs (x,y) = RandT . state $                             first (randomRs (x,y)) . split  instance (Monad m, RandomGen g) => MonadSplit g (RandT g m) where-    getSplit = RandT . liftState $ split+    getSplit = RandT . state $ split  -- | Evaluate a RandT computation using the generator @g@.  Note that the -- generator @g@ is not returned, so there's no way to recover the@@ -203,11 +194,13 @@     getRandoms = lift getRandoms     getRandomRs = lift . getRandomRs -#if MIN_VERSION_transformers(0,4,0) instance (MonadRandom m) => MonadRandom (ExceptT e m) where-#else+    getRandom = lift getRandom+    getRandomR = lift . getRandomR+    getRandoms = lift getRandoms+    getRandomRs = lift . getRandomRs+ instance (Error e, MonadRandom m) => MonadRandom (ErrorT e m) where-#endif     getRandom = lift getRandom     getRandomR = lift . getRandomR     getRandoms = lift getRandoms@@ -249,11 +242,10 @@ instance (MonadSplit g m, Monoid w) => MonadSplit g (RWSS.RWST r w s m) where     getSplit = lift getSplit -#if MIN_VERSION_transformers(0,4,0) instance (MonadSplit g m) => MonadSplit g (ExceptT e m) where-#else+    getSplit = lift getSplit+ instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m) where-#endif     getSplit = lift getSplit  instance (MonadSplit g m) => MonadSplit g (MaybeT m) where
MonadRandom.cabal view
@@ -1,5 +1,5 @@ name:                MonadRandom-version:             0.3.0.1+version:             0.3.0.2 synopsis:            Random-number generation monad. description:         Support for computations which consume random values. license:             OtherLicense@@ -17,6 +17,6 @@  library   exposed-modules:     Control.Monad.Random, Control.Monad.Random.Class-  build-depends:       base >= 2 && < 5, transformers >= 0.3 && < 0.5, mtl, random+  build-depends:       base >= 2 && < 5, transformers >= 0.3 && < 0.5, transformers-compat == 0.4.*, mtl, random   ghc-options:         -Wall   default-language:    Haskell2010