MonadRandom
Random-number generation monad.
| LTS Haskell 24.16: | 0.6.2 |
| Stackage Nightly 2025-10-24: | 0.6.2 |
| Latest on Hackage: | 0.6.2 |
MonadRandom-0.6.2@sha256:a5f8a837e993c008dbcdb61a92a8dbfbbb1231c7fe41439e5ecccd1e9114d8d1,1481Module documentation for 0.6.2
Support for computations which consume random values.
Changes
0.6.2 (5 March 2025)
- Support
random-1.3. Thanks to @bgamari and @lehins for help making the necessary updates.
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
ErrorTandListTtransformers -
Allow building with
transformers-0.6andmtl-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)
-
StatefulGeninstances forRandT -
Addition of
RandGen -
Addition of
withRandGenandwithRandGen_ -
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
failpackage 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
mtlandtransformerslibraries. - Add lazy and strict variants of
RandT. - Add
MonadRandomandMonadSplitinstances forListT. - Add (but do not export)
unRandTfield toRandT. - Add
MonadCont,MonadError,MonadRWS,PrimMonad, andMonadFailinstances forRandT. - Add
evalRandTIOoperation. - Move
fromListanduniformoperations toControl.Monad.Random.Class. fromListnow raises an error when the total weight of elements is zero.- Generalize the type of
uniformto work over anyFoldable. - Add new operations
weighted,weightedMay,fromListMay, anduniformMay.weightedis likefromListbut generalized to work over anyFoldable. TheMayvariants return aMayberesult instead of raising an error. - New
MonadInterleaveclass for random monads which can interleave random generation usingsplit. In some ways this is similar toMonadSplitbut much more useful. - Improved documentation.
0.4.2.3 (21 April 2016)
- Mark
Control.Monad.RandomasTrustworthy.
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
MonadPlusandAlternativeinstances forRandT.
0.4.1 (20 November 2015)
- Remove unnecessary
Monad mconstraint fromliftRandTandrunRandT.
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 gconstraints 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-compatto 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 aconstraint from types ofliftRandandliftRandT.
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.3and0.4.
0.2 (20 August 2014)
- change
Randfrom anewtypeto a type synonym MonadRandomandMonadSplitinstances forExceptT- strict variants of
StateTandWriterT - both lazy and strict variants of
RWST
- remove unneeded
RandomGenconstraint fromMonadState RandTinstance
0.1.13 (9 February 2014)
- add simple
uniformfunction for creating a uniform distribution over a list of values
0.1.12 (30 September 2013)
- add
liftRandTandliftRandfunctions, for lifting explicit generator-passing functions intoRandTandRand, respectively.
0.1.11 (1 August 2013)
- add
MonadRandomandMonadSplitinstances forIdentityT - derive
MonadReaderandMonadWriterinstances instead of declaring them explicitly (thanks again to James Koppel)
0.1.10 (16 July 2013)
- add
MonadRandomandMonadSplitinstances forContT(thanks to James Koppel for the patch)
0.1.9 (26 April 2013)
- add
MonadRandomandMonadSplitinstances forMaybeT