packages feed

mwc-random-monad 0.7.1.0 → 0.7.2.0

raw patch · 3 files changed

+21/−8 lines, 3 filesdep ~mwc-randomPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: mwc-random

API changes (from Hackage documentation)

+ System.Random.MWC.Distributions.Monad: uniformShuffleM :: (MonadPrim m, MVector v a, PrimState m ~ PrimState (BasePrimMonad m)) => v (PrimState m) a -> Rand m ()
- System.Random.MWC.Distributions.Monad: uniformShuffle :: (MonadPrim m, Vector v a, Vector v Int) => v a -> Rand m (v a)
+ System.Random.MWC.Distributions.Monad: uniformShuffle :: (MonadPrim m, Vector v a) => v a -> Rand m (v a)
- System.Random.MWC.Monad: runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ m) => Rand m a -> IO a
+ System.Random.MWC.Monad: runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ IO) => Rand m a -> m a

Files

System/Random/MWC/Distributions/Monad.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} -- | -- Module    : System.Random.MWC.Monad@@ -29,12 +30,15 @@     -- * Permutations   , uniformPermutation   , uniformShuffle+  , uniformShuffleM   ) where +import Control.Monad.Primitive       (PrimState) import Control.Monad.Primitive.Class (MonadPrim(..)) -import Data.Vector.Generic (Vector)-import Data.Traversable    (Traversable)+import Data.Vector.Generic         (Vector)+import Data.Vector.Generic.Mutable (MVector)+import Data.Traversable            (Traversable) import qualified System.Random.MWC.Distributions as MWC import System.Random.MWC.Monad @@ -148,8 +152,16 @@  -- | Random variate generator for a uniformly distributed shuffle of a --   vector.-uniformShuffle :: (MonadPrim m, Vector v a, Vector v Int)+uniformShuffle :: (MonadPrim m, Vector v a)                => v a                -> Rand m (v a) {-# INLINE uniformShuffle #-} uniformShuffle xs = toRand $ \g -> MWC.uniformShuffle xs g++-- | In-place uniformly distributed shuffle (all shuffles are+--   equiprobable) of a vector.+uniformShuffleM :: (MonadPrim m, MVector v a, PrimState m ~ PrimState (BasePrimMonad m))+                => v (PrimState m) a+                -> Rand m ()+uniformShuffleM xs = toRand $ \g -> MWC.uniformShuffleM xs g+{-# INLINE uniformShuffleM #-}
System/Random/MWC/Monad.hs view
@@ -42,7 +42,7 @@ import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.IO.Class    (MonadIO(..)) import Control.Monad.ST          (ST)-import Control.Monad.Primitive   (PrimMonad, PrimState)+import Control.Monad.Primitive   (PrimState) import Control.Monad.Primitive.Class (MonadPrim(..))  import Data.Word               (Word32)@@ -124,8 +124,9 @@ {-# INLINE runWithSeed #-}  -- | Run monad using system random-runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ m) => Rand m a -> IO a-runWithSystemRandom = MWC.withSystemRandom . runRand+runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ IO) => Rand m a -> m a+runWithSystemRandom rnd+  = runRand rnd =<< liftPrim MWC.createSystemRandom {-# INLINE runWithSystemRandom #-}  
mwc-random-monad.cabal view
@@ -1,5 +1,5 @@ Name:                mwc-random-monad-Version:             0.7.1.0+Version:             0.7.2.0 License:             BSD3 License-file:        LICENSE Author:              Alexey Khudyakov <alexey.skladnoy@gmail.com>@@ -21,7 +21,7 @@     primitive,     monad-primitive,     vector     >= 0.7,-    mwc-random >= 0.13.2.0+    mwc-random >= 0.13.3.0   Exposed-modules:     System.Random.MWC.Monad     System.Random.MWC.Distributions.Monad