Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-MonadRandom for openSUSE:Factory
checked in at 2021-04-24 23:08:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-MonadRandom (Old)
and /work/SRC/openSUSE:Factory/.ghc-MonadRandom.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-MonadRandom"
Sat Apr 24 23:08:56 2021 rev:3 rq:888028 version:0.5.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-MonadRandom/ghc-MonadRandom.changes
2020-12-22 11:33:49.449159508 +0100
+++
/work/SRC/openSUSE:Factory/.ghc-MonadRandom.new.12324/ghc-MonadRandom.changes
2021-04-24 23:10:06.191475414 +0200
@@ -1,0 +2,11 @@
+Thu Apr 8 20:14:44 UTC 2021 - [email protected]
+
+- Update MonadRandom to version 0.5.3.
+ 0.5.3 (8 April 2021)
+ --------------------
+
+ - `StatefulGen` instances for `RandT`
+ - Addition of `RandGen`
+ - Additioon of `withRandGen` and `withRandGen_`
+
+-------------------------------------------------------------------
Old:
----
MonadRandom-0.5.2.tar.gz
New:
----
MonadRandom-0.5.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-MonadRandom.spec ++++++
--- /var/tmp/diff_new_pack.Y67TLn/_old 2021-04-24 23:10:06.651476065 +0200
+++ /var/tmp/diff_new_pack.Y67TLn/_new 2021-04-24 23:10:06.655476070 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-MonadRandom
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%global pkg_name MonadRandom
Name: ghc-%{pkg_name}
-Version: 0.5.2
+Version: 0.5.3
Release: 0
Summary: Random-number generation monad
License: BSD-3-Clause
++++++ MonadRandom-0.5.2.tar.gz -> MonadRandom-0.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/MonadRandom-0.5.2/CHANGES.markdown
new/MonadRandom-0.5.3/CHANGES.markdown
--- old/MonadRandom-0.5.2/CHANGES.markdown 2001-09-09 03:46:40.000000000
+0200
+++ new/MonadRandom-0.5.3/CHANGES.markdown 2001-09-09 03:46:40.000000000
+0200
@@ -1,3 +1,10 @@
+0.5.3 (8 April 2021)
+--------------------
+
+- `StatefulGen` instances for `RandT`
+- Addition of `RandGen`
+- Additioon of `withRandGen` and `withRandGen_`
+
0.5.2 (24 June 2020)
--------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/MonadRandom-0.5.2/Control/Monad/Trans/Random/Lazy.hs
new/MonadRandom-0.5.3/Control/Monad/Trans/Random/Lazy.hs
--- old/MonadRandom-0.5.2/Control/Monad/Trans/Random/Lazy.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/MonadRandom-0.5.3/Control/Monad/Trans/Random/Lazy.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
@@ -46,6 +47,10 @@
liftListen,
liftPass,
evalRandTIO,
+ -- * StatefulGen interface
+ RandGen(..),
+ withRandGen,
+ withRandGen_,
-- * Examples
-- ** Random monads
-- $examples
@@ -65,9 +70,13 @@
import Control.Monad.Signatures
import Control.Monad.Trans.Class
import qualified Control.Monad.Trans.State.Lazy as LazyState
+import Control.Monad.Trans.Random.Strict (RandGen(..))
import Data.Functor.Identity
+#if MIN_VERSION_random(1,2,0)
+import System.Random.Stateful
+#else
import System.Random
-
+#endif
-- | A random monad parameterized by the type @g@ of the generator to carry.
--
-- The 'return' function leaves the generator unchanged, while '>>=' uses the
@@ -261,6 +270,60 @@
evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
evalRandTIO t = liftIO newStdGen >>= evalRandT t
+#if MIN_VERSION_random(1,2,0)
+-- |
+--
+-- @since 0.5.3
+instance (Monad m, RandomGen g) => StatefulGen (RandGen g) (RandT g m) where
+ uniformWord32R r = applyRandT (genWord32R r)
+ uniformWord64R r = applyRandT (genWord64R r)
+ uniformWord8 = applyRandT genWord8
+ uniformWord16 = applyRandT genWord16
+ uniformWord32 = applyRandT genWord32
+ uniformWord64 = applyRandT genWord64
+ uniformShortByteString n = applyRandT (genShortByteString n)
+
+-- |
+--
+-- @since 0.5.3
+instance (Monad m, RandomGen g) => RandomGenM (RandGen g) g (RandT g m) where
+ applyRandomGenM = applyRandT
+
+applyRandT :: Applicative m => (g -> (a, g)) -> RandGen g -> RandT g m a
+applyRandT f _ = liftRandT (pure . f)
+#endif
+
+-- | A `RandT` runner that allows using it with `StatefulGen` restricted
actions. Returns
+-- the outcome of random computation and the new pseudo-random-number generator
+--
+-- >>> withRandGen (mkStdGen 2021) uniformM :: IO (Int, StdGen)
+-- (6070831465987696718,StdGen {unStdGen = SMGen 4687568268719557181
4805600293067301895})
+--
+-- @since 0.5.3
+withRandGen ::
+ g
+ -- ^ initial generator
+ -> (RandGen g -> RandT g m a)
+ -> m (a, g)
+ -- ^ return value and final generator
+withRandGen g action = runRandT (action RandGen) g
+
+-- | Same as `withRandGen`, but discards the resulting generator.
+--
+-- >>> withRandGen_ (mkStdGen 2021) uniformM :: IO Int
+-- 6070831465987696718
+--
+-- @since 0.5.3
+withRandGen_ ::
+ Monad m
+ => g
+ -- ^ initial generator
+ -> (RandGen g -> RandT g m a)
+ -> m a
+ -- ^ return value and final generator
+withRandGen_ g action = evalRandT (action RandGen) g
+
+
{- $examples
The @die@ function simulates the roll of a die, picking a number between 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/MonadRandom-0.5.2/Control/Monad/Trans/Random/Strict.hs
new/MonadRandom-0.5.3/Control/Monad/Trans/Random/Strict.hs
--- old/MonadRandom-0.5.2/Control/Monad/Trans/Random/Strict.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/MonadRandom-0.5.3/Control/Monad/Trans/Random/Strict.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
@@ -47,6 +48,10 @@
liftCatch,
liftListen,
liftPass,
+ -- * StatefulGen interface
+ RandGen(..),
+ withRandGen,
+ withRandGen_,
-- * Examples
-- ** Random monads
-- $examples
@@ -67,7 +72,11 @@
import Control.Monad.Trans.Class
import qualified Control.Monad.Trans.State.Strict as StrictState
import Data.Functor.Identity
+#if MIN_VERSION_random(1,2,0)
+import System.Random.Stateful
+#else
import System.Random
+#endif
-- | A random monad parameterized by the type @g@ of the generator to carry.
--
@@ -262,6 +271,67 @@
evalRandTIO :: (MonadIO m) => RandT StdGen m a -> m a
evalRandTIO t = liftIO newStdGen >>= evalRandT t
+
+-- | A proxy that carries information about the type of generator to use with
@RandT@
+-- monad and its `StatefulGen` instance.
+--
+-- @since 0.5.3
+data RandGen g = RandGen
+
+#if MIN_VERSION_random(1,2,0)
+-- |
+--
+-- @since 0.5.3
+instance (Monad m, RandomGen g) => StatefulGen (RandGen g) (RandT g m) where
+ uniformWord32R r = applyRandT (genWord32R r)
+ uniformWord64R r = applyRandT (genWord64R r)
+ uniformWord8 = applyRandT genWord8
+ uniformWord16 = applyRandT genWord16
+ uniformWord32 = applyRandT genWord32
+ uniformWord64 = applyRandT genWord64
+ uniformShortByteString n = applyRandT (genShortByteString n)
+
+-- |
+--
+-- @since 0.5.3
+instance (Monad m, RandomGen g) => RandomGenM (RandGen g) g (RandT g m) where
+ applyRandomGenM = applyRandT
+
+applyRandT :: Applicative m => (g -> (a, g)) -> RandGen g -> RandT g m a
+applyRandT f _ = liftRandT (pure . f)
+#endif
+
+-- | A `RandT` runner that allows using it with `StatefulGen` restricted
actions. Returns
+-- the outcome of random computation and the new pseudo-random-number generator
+--
+-- >>> withRandGen (mkStdGen 2021) uniformM :: IO (Int, StdGen)
+-- (6070831465987696718,StdGen {unStdGen = SMGen 4687568268719557181
4805600293067301895})
+--
+-- @since 0.5.3
+withRandGen ::
+ g
+ -- ^ initial generator
+ -> (RandGen g -> RandT g m a)
+ -> m (a, g)
+ -- ^ return value and final generator
+withRandGen g action = runRandT (action RandGen) g
+
+-- | Same as `withRandGen`, but discards the resulting generator.
+--
+-- >>> withRandGen_ (mkStdGen 2021) uniformM :: IO Int
+-- 6070831465987696718
+--
+-- @since 0.5.3
+withRandGen_ ::
+ Monad m
+ => g
+ -- ^ initial generator
+ -> (RandGen g -> RandT g m a)
+ -> m a
+ -- ^ return value and final generator
+withRandGen_ g action = evalRandT (action RandGen) g
+
+
{- $examples
The @die@ function simulates the roll of a die, picking a number between 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/MonadRandom-0.5.2/MonadRandom.cabal
new/MonadRandom-0.5.3/MonadRandom.cabal
--- old/MonadRandom-0.5.2/MonadRandom.cabal 2001-09-09 03:46:40.000000000
+0200
+++ new/MonadRandom-0.5.3/MonadRandom.cabal 2001-09-09 03:46:40.000000000
+0200
@@ -1,5 +1,5 @@
name: MonadRandom
-version: 0.5.2
+version: 0.5.3
synopsis: Random-number generation monad.
description: Support for computations which consume random values.
license: BSD3