new MonadRandom instance; and maintainership

Brent Yorgey byorgey at seas.upenn.edu
Fri Apr 26 21:43:28 CEST 2013


Right, the solution is that with RandT Maybe, upon failure the seed
gets thrown away.  That is, mplus runs both its arguments with the
same seed.  What I actually wanted was MaybeT Rand.  That requires a
MonadRandom instance for MaybeT, which I will add.

-Brent

On Fri, Apr 26, 2013 at 12:30:51AM +0200, Sjoerd Visscher wrote:
> Uhm, yeah, I forgot that you can still use monadic bind together with the Alternative methods.
> 
> Never mind me!
> 
> Sjoerd
> 
> On Apr 26, 2013, at 12:22 AM, Felipe Almeida Lessa <felipe.lessa at gmail.com> wrote:
> 
> > Wouldn't Alternative lead to the same bug?
> > 
> > On Thu, Apr 25, 2013 at 7:02 PM, Sjoerd Visscher <sjoerd at w3future.com> wrote:
> >> Maybe a derived Alternative instance for RandT still makes sense?
> >> 
> >> Sjoerd
> >> 
> >> On Apr 25, 2013, at 8:28 PM, Brent Yorgey <byorgey at seas.upenn.edu> wrote:
> >> 
> >>> 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
> >>> 
> >>> _______________________________________________
> >>> Libraries mailing list
> >>> Libraries at haskell.org
> >>> http://www.haskell.org/mailman/listinfo/libraries
> >> 
> >> 
> >> _______________________________________________
> >> Libraries mailing list
> >> Libraries at haskell.org
> >> http://www.haskell.org/mailman/listinfo/libraries
> > 
> > 
> > 
> > -- 
> > Felipe.
> 
> 



More information about the Libraries mailing list