Since 2013 or so I have been the maintainer of the
MonadRandom package, which provides an
mtl-style type class for monads with support for generation of pseudorandom values, along with a concrete random monad transformer
RandT. As of this writing it has 89 reverse dependencies on Hackage—a healthy number, and one that makes me think carefully about any breaking changes to the package.
Recently I got a number of pull requests, and have been working on putting together an 0.5 release which adds a few functions, adds lazy- and strict-state variants of
RandT, and reorganizes things to be closer to standard practice of the
transformers package. Since this release will include some technically breaking changes already, it’s a good time to think about potentially including others.
The one thing I am not sure what to do about is this issue: Allow MonadRandom interface for MWC-random.
mwc-random is a very nice package for psuedorandom number generation, but apparently it does not fit into the
MonadRandom abstraction. First of all, I would like to understand why—I am not very familiar with
mwc-random. Second of all, I’d love to figure out a solution, but ideally one that causes as little breakage to existing code as possible.
Leave a comment (either here or on the github issue) if this is something you know/care about, and let’s see if we can figure out a good solution together!