MonadRandom
Random-number generation monad.
LTS Haskell 23.9: | 0.6.1 |
Stackage Nightly 2025-02-18: | 0.6.1 |
Latest on Hackage: | 0.6.1 |
MonadRandom-0.6.1@sha256:17914ff7ca7bf9982ee65fe5a18780e9f54ce2d9ca4d3c3950cfc9284b8d72e3,1469
Module documentation for 0.6.1
Support for computations which consume random values.
Changes
0.6.1 (22 October 2024)
- Fix the potential for a crash in
fromListMay
(and hence also in functions that use it, namelyfromList
,weighted
,weightedMay
,uniform
, anduniformMay
). Thanks to @Flupp for pointing out the issue and suggesting a fix. The fix may in theory cause these functions, extremely rarely, to output values different from the old values for the same seed. See https://byorgey.github.io/blog/posts/2024/10/14/MonadRandom-version-bump.html for more information and discussion.
0.6 (5 Nov 2022)
-
Remove instances for deprecated
ErrorT
andListT
transformers -
Allow building with
transformers-0.6
andmtl-2.3.1
-
Drop support for GHC 7.6 and 7.8
-
r1 (18 Dec 2022): require
base >= 4.8
-
r2 (9 Jan 2023): require
random >= 1.0.1
-
r3 (22 Feb 2023): allow
primitive-0.8
-
r4 (12 Oct 2023): allow
primitive-0.9
, test on GHC 9.6 and 9.8
0.5.3 (8 April 2021)
-
StatefulGen
instances forRandT
-
Addition of
RandGen
-
Addition of
withRandGen
andwithRandGen_
-
r1 (28 April 2021): require
base >= 4.6
-
r2 (9 Aug 2021): allow
transformers-compat-0.7
. -
r3 (9 Aug 2022): Test with GHC 9.0-9.4
0.5.2 (24 June 2020)
- Support for
random-1.2
. - Drop support for GHC 7.4, test with GHC 8.10.
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)
- Only depend on
fail
package when GHC < 8.0.
0.5.1 (9 February 2017)
Re-export System.Random
from Control.Monad.Random.{Lazy,Strict}
and hence also from Control.Monad.Random
.
- Hackage r1: allow
transformers-compat-0.6.x
.
0.5 (3 January 2017)
This release has quite a few small additions as well as a big module reorganization. However, thanks to module re-exports, most existing code using the library should continue to work with no changes; the major version bump reflects the large reorganization and my inability to 100% guarantee that existing user code will not break.
The biggest changes that may be of interest to users of the library
include new lazy vs strict variants of the Rand
monad; a new
MonadInterleave
class which is a big improvement over
MonadSplit
; new PrimMonad
instances; and new random selection
functions like weighted
, weightedMay
, uniformMay
, etc.. See
the list below for full details.
Although there was some discussion of generalizing MonadRandom
to
work for a wider range of underlying generators
(see
#26,
#31, and
comments on this blog post),
I decided to punt on that for now. It seems rather complicated and
there
are
already good alternatives so
I decided to keep things simple for this release. I’m still open to
proposals for generalizing future releases.
Changes in 0.5 include:
- Refactor to reflect structure of
mtl
andtransformers
libraries. - Add lazy and strict variants of
RandT
. - Add
MonadRandom
andMonadSplit
instances forListT
. - Add (but do not export)
unRandT
field toRandT
. - Add
MonadCont
,MonadError
,MonadRWS
,PrimMonad
, andMonadFail
instances forRandT
. - Add
evalRandTIO
operation. - Move
fromList
anduniform
operations toControl.Monad.Random.Class
. fromList
now raises an error when the total weight of elements is zero.- Generalize the type of
uniform
to work over anyFoldable
. - Add new operations
weighted
,weightedMay
,fromListMay
, anduniformMay
.weighted
is likefromList
but generalized to work over anyFoldable
. TheMay
variants return aMaybe
result instead of raising an error. - New
MonadInterleave
class for random monads which can interleave random generation usingsplit
. In some ways this is similar toMonadSplit
but much more useful. - Improved documentation.
0.4.2.3 (21 April 2016)
- Mark
Control.Monad.Random
asTrustworthy
.
0.4.2.2 (18 January 2016)
- Allow
transformers-0.5
.
0.4.2.1 (16 January 2016)
- Allow
transformers-compat-0.5
.
0.4.2 (16 January 2016)
- Add
MonadPlus
andAlternative
instances forRandT
.
0.4.1 (20 November 2015)
- Remove unnecessary
Monad m
constraint fromliftRandT
andrunRandT
.
This should again technically require a major version bump, but I’m not doing it this time in the interest of not being super annoying. If this breaks something for you, just yell, and I will deprecate this version and do a proper 0.5 release.
0.4 (12 May 2015)
- Remove unnecessary
RandomGen g
constraints fromliftRandT
,liftRand
,evalRandT
,evalRand
,runRandT
,runRand
.
A major version bump is required by the PVP since the types of all the above methods have changed, but this release is again very unlikely to break any client code.
0.3.0.2 (30 March 2015)
- Add
transformers-compat
to allow building with newermtl
0.3.0.1 (24 November 2014)
- Improve documentation: ranges are exclusive at the upper bound
0.3 (4 September 2014)
- Eta-reduce definition of
Rand
- Remove unnecessary
Random a
constraint from types ofliftRand
andliftRandT
.
Note that a major version bump is required by the PVP since the
types of liftRand
and liftRandT
have changed, but this release
is highly unlikely to break any client code.
0.2.0.1 (24 August 2014)
- Allow building with both
transformers-0.3
and0.4
.
0.2 (20 August 2014)
- change
Rand
from anewtype
to a type synonym MonadRandom
andMonadSplit
instances forExceptT
- strict variants of
StateT
andWriterT
- both lazy and strict variants of
RWST
- remove unneeded
RandomGen
constraint fromMonadState RandT
instance
0.1.13 (9 February 2014)
- add simple
uniform
function for creating a uniform distribution over a list of values
0.1.12 (30 September 2013)
- add
liftRandT
andliftRand
functions, for lifting explicit generator-passing functions intoRandT
andRand
, respectively.
0.1.11 (1 August 2013)
- add
MonadRandom
andMonadSplit
instances forIdentityT
- derive
MonadReader
andMonadWriter
instances instead of declaring them explicitly (thanks again to James Koppel)
0.1.10 (16 July 2013)
- add
MonadRandom
andMonadSplit
instances forContT
(thanks to James Koppel for the patch)
0.1.9 (26 April 2013)
- add
MonadRandom
andMonadSplit
instances forMaybeT