
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.