Proposal: Move 'split' into a separate class in System.Random
jmaessen at alum.mit.edu
Mon Oct 11 11:26:51 EDT 2010
On Sat, Oct 9, 2010 at 11:02 AM, Thomas DuBuisson
<thomas.dubuisson at gmail.com> wrote:
> I have updated the ticket/patch for this proposal . It seems the
> community has agreed on
>> class RandomGen g where
>> next :: g -> (Int, g)
>> genRange :: g -> (Int,Int)
>> genRange _ = (minBound, maxBound)
>> class (RandomGen g) => SplittableGen g where
>> split :: g -> (g, g)
> Notice SPJs good catch that SplittableGen should be constrained by
> RandomGen is there (lacking discussion, but its hard to imagine
> objection). I'm not sure what you, Jan, mean by removing Read and
> Show constraints as I don't see any.
I was mis-remembering the following as a class constraint on RandomGen:
data StdGen = ... -- Abstract
instance RandomGen StdGen where ...
instance Read StdGen where ...
instance Show StdGen where ...
This makes it hard to impossible to implement splitting of StdGen both
efficiently and correctly.
More information about the Libraries