new MonadRandom instance; and maintainership

Brent Yorgey byorgey at seas.upenn.edu
Thu Apr 25 20:28:48 CEST 2013


On Thu, Apr 25, 2013 at 10:47:57AM -0400, Brent Yorgey wrote:
> On Wed, Apr 24, 2013 at 02:38:01PM -0400, Brent Yorgey wrote:
> > Hi all,
> > 
> > I would like to add a derived MonadPlus instance for both Rand and
> > RandT.  Also, since it seems that MonadRandom has no maintainer I
> > propose to take on its maintainership.  Any
> > comments/objections/etc. welcome.
> 
> Also, ignore what I said about deriving an instance for Rand, that
> does not make any sense. However, adding an instance for RandT does
> still make sense.  A repository with the changes is here:
> 
>   http://github.com/byorgey/MonadRandom
> 
> I'll upload in a few days if no one objects.

Puzzle time!  Can you explain the semantics of the following code
(given a derived MonadPlus instance for RandT)?

    maybeFail :: RandT StdGen Maybe ()
    maybeFail = do
      r <- getRandomR (0, 1 :: Double)
      guard (r < 1/2)

    succeed :: RandT StdGen Maybe ()
    succeed = maybeFail `mplus` succeed

I therefore rescind my proposal to add a MonadPlus instance for
RandT.  However, I still volunteer to be the maintainer. =)

-Brent



More information about the Libraries mailing list