packages feed

MonadRandom 0.5.1.1 → 0.5.1.2

raw patch · 3 files changed

+15/−16 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Control.Monad.Random.Class: fromList :: (MonadRandom m) => [(a, Rational)] -> m a
+ Control.Monad.Random.Class: fromList :: MonadRandom m => [(a, Rational)] -> m a
- Control.Monad.Random.Class: fromListMay :: (MonadRandom m) => [(a, Rational)] -> m (Maybe a)
+ Control.Monad.Random.Class: fromListMay :: MonadRandom m => [(a, Rational)] -> m (Maybe a)
- Control.Monad.Random.Class: getRandom :: (MonadRandom m, (Random a)) => m a
+ Control.Monad.Random.Class: getRandom :: (MonadRandom m, Random a) => m a
- Control.Monad.Random.Class: getRandomR :: (MonadRandom m, (Random a)) => (a, a) -> m a
+ Control.Monad.Random.Class: getRandomR :: (MonadRandom m, Random a) => (a, a) -> m a
- Control.Monad.Random.Class: getRandomRs :: (MonadRandom m, (Random a)) => (a, a) -> m [a]
+ Control.Monad.Random.Class: getRandomRs :: (MonadRandom m, Random a) => (a, a) -> m [a]
- Control.Monad.Random.Class: getRandoms :: (MonadRandom m, (Random a)) => m [a]
+ Control.Monad.Random.Class: getRandoms :: (MonadRandom m, Random a) => m [a]
- Control.Monad.Random.Lazy: evalRandT :: (Monad m) => RandT g m a -> g -> m a
+ Control.Monad.Random.Lazy: evalRandT :: Monad m => RandT g m a -> g -> m a
- Control.Monad.Random.Lazy: evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
+ Control.Monad.Random.Lazy: evalRandTIO :: MonadIO m => RandT StdGen m a -> m a
- Control.Monad.Random.Lazy: execRandT :: (Monad m) => RandT g m a -> g -> m g
+ Control.Monad.Random.Lazy: execRandT :: Monad m => RandT g m a -> g -> m g
- Control.Monad.Random.Strict: evalRandT :: (Monad m) => RandT g m a -> g -> m a
+ Control.Monad.Random.Strict: evalRandT :: Monad m => RandT g m a -> g -> m a
- Control.Monad.Random.Strict: evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
+ Control.Monad.Random.Strict: evalRandTIO :: MonadIO m => RandT StdGen m a -> m a
- Control.Monad.Random.Strict: execRandT :: (Monad m) => RandT g m a -> g -> m g
+ Control.Monad.Random.Strict: execRandT :: Monad m => RandT g m a -> g -> m g
- Control.Monad.Trans.Random.Lazy: evalRandT :: (Monad m) => RandT g m a -> g -> m a
+ Control.Monad.Trans.Random.Lazy: evalRandT :: Monad m => RandT g m a -> g -> m a
- Control.Monad.Trans.Random.Lazy: evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
+ Control.Monad.Trans.Random.Lazy: evalRandTIO :: MonadIO m => RandT StdGen m a -> m a
- Control.Monad.Trans.Random.Lazy: execRandT :: (Monad m) => RandT g m a -> g -> m g
+ Control.Monad.Trans.Random.Lazy: execRandT :: Monad m => RandT g m a -> g -> m g
- Control.Monad.Trans.Random.Lazy: liftListen :: (Monad m) => Listen w m (a, g) -> Listen w (RandT g m) a
+ Control.Monad.Trans.Random.Lazy: liftListen :: Monad m => Listen w m (a, g) -> Listen w (RandT g m) a
- Control.Monad.Trans.Random.Lazy: liftPass :: (Monad m) => Pass w m (a, g) -> Pass w (RandT g m) a
+ Control.Monad.Trans.Random.Lazy: liftPass :: Monad m => Pass w m (a, g) -> Pass w (RandT g m) a
- Control.Monad.Trans.Random.Strict: evalRandT :: (Monad m) => RandT g m a -> g -> m a
+ Control.Monad.Trans.Random.Strict: evalRandT :: Monad m => RandT g m a -> g -> m a
- Control.Monad.Trans.Random.Strict: evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
+ Control.Monad.Trans.Random.Strict: evalRandTIO :: MonadIO m => RandT StdGen m a -> m a
- Control.Monad.Trans.Random.Strict: execRandT :: (Monad m) => RandT g m a -> g -> m g
+ Control.Monad.Trans.Random.Strict: execRandT :: Monad m => RandT g m a -> g -> m g
- Control.Monad.Trans.Random.Strict: liftListen :: (Monad m) => Listen w m (a, g) -> Listen w (RandT g m) a
+ Control.Monad.Trans.Random.Strict: liftListen :: Monad m => Listen w m (a, g) -> Listen w (RandT g m) a
- Control.Monad.Trans.Random.Strict: liftPass :: (Monad m) => Pass w m (a, g) -> Pass w (RandT g m) a
+ Control.Monad.Trans.Random.Strict: liftPass :: Monad m => Pass w m (a, g) -> Pass w (RandT g m) a

Files

CHANGES.markdown view
@@ -1,3 +1,9 @@+0.5.1.2 (18 Jan 2020)+---------------------++- Better error message when total probability sum is negative in+  fromListMay, weightedMay, weighted+ 0.5.1.1 (21 May 2018) --------------------- 
Control/Monad/Random/Class.hs view
@@ -365,7 +365,7 @@ weighted t = do   ma <- weightedMay t   case ma of-    Nothing -> error "Control.Monad.Random.Class.weighted: empty collection, or total weight = 0"+    Nothing -> error "Control.Monad.Random.Class.weighted: empty collection, or total weight <= 0"     Just a  -> return a  -- | Sample a random value from a weighted collection of elements.@@ -384,14 +384,14 @@     Just a  -> return a  -- | Sample a random value from a weighted list.  Return @Nothing@ if---   the list is empty or the total weight is zero.+--   the list is empty or the total weight is nonpositive. fromListMay :: (MonadRandom m) => [(a, Rational)] -> m (Maybe a) fromListMay xs = do   let s    = fromRational (sum (map snd xs)) :: Double       cums = scanl1 (\ ~(_,q) ~(y,s') -> (y, s'+q)) xs-  case s of-    0 -> return Nothing-    _ -> do+  case s <= 0 of+    True -> return Nothing+    _    -> do       p <- liftM toRational $ getRandomR (0, s)       return . Just . fst . head . dropWhile ((< p) . snd) $ cums 
MonadRandom.cabal view
@@ -1,5 +1,5 @@ name:                MonadRandom-version:             0.5.1.1+version:             0.5.1.2 synopsis:            Random-number generation monad. description:         Support for computations which consume random values. license:             BSD3@@ -11,14 +11,7 @@ build-type:          Simple cabal-version:       >=1.10 extra-source-files:  CHANGES.markdown-tested-with:-  GHC==7.4.2,-  GHC==7.6.3,-  GHC==7.8.4,-  GHC==7.10.3,-  GHC==8.0.2,-  GHC==8.2.2,-  GHC==8.4.1+tested-with:         GHC ==7.4.2 || ==7.6.3 || ==7.8.4 || ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1  source-repository head   type:     git@@ -38,8 +31,8 @@     transformers        >=0.3 && <0.6,     transformers-compat >=0.4 && <0.7,     mtl                 >=2.1 && <2.3,-    primitive           >=0.6 && <0.7,-    random+    primitive           >=0.6 && <0.8,+    random              >=1.0 && <1.2   ghc-options:         -Wall   default-language:    Haskell2010