Proposal: Move 'split' into a separate class in System.Random

Henning Thielemann schlepptop at henning-thielemann.de
Wed Sep 15 11:20:30 EDT 2010


Thomas DuBuisson schrieb:
> The "split" routine in the RandomGen seems to be a sore spot for some
> people and is perceived to have few users (even as a percentage of
> RandomGen users).  I propose:
> 
> 1) Making a class "SplittableGen":
> 
> class SplittableGen g where
>   split :: g -> (g, g)
> 
> 2) (re)moving the "split" routine from the RandomGen class.
> 
> See ticket 4314 [1] for the patch.
> 
> Period of discussion: Till October 8 (3.5 weeks, ending just over 1
> week after ICFP)

I assume that there is more code that uses RandomGen in constraints than
code that defines instances, thus the split of the split class might
look like:

class StraightRandomGen g where
  System.Random.next :: g -> (Int, g)
  System.Random.genRange :: g -> (Int, Int)

class StraightRandomGen g => RandomGen g where
  System.Random.split :: g -> (g, g)


All existing code that uses RandomGen in constraints would remain valid
this way.


More information about the Libraries mailing list