<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Carter,<div class=""><br class=""></div><div class="">I obviously didn’t explain myself very well. We can decouple removing the “bad” RNG from the replacement of it with a “good” RNG. As I thought I said, any new RNG should have the same status as every other RNG and then people can choose; there is no “blessed” RNG. It seems simple (to me at any rate) to decouple these.</div><div class=""><br class=""></div><div class="">More power to your elbow on creating an RNG but I don’t think there should be anything “official” about it. I’ll say it again: I don’t think there should be a random v2 but a random-foobar where foobar is your algorithm.</div><div class=""><br class=""></div><div class="">What do you see sub-optimal about deprecating something that is clearly broken?</div><div class=""><br class=""></div><div class="">I believe I have done my bit for the Haskell Community in trying to resolve what is a tedious situation. I suggest we await the view of the Core Libraries Committee assuming they still see this as part of their scope and take it from there.</div><div class=""><br class=""></div><div class="">Dominic.</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 24 Jan 2017, at 15:33, Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" class="">carter.schonwald@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Dominic, if you want to remove yourself from maintainer hood that's cool. </div><div class=""><br class=""></div><div class="">I'm keen on finishing up my random v2 release which is a much improved breaking Change.  </div><div class=""><br class=""></div><div class="">I spent part of my holiday this year working on it. </div><div class=""><br class=""></div><div class="">Dominic: I'm confused and surprised by your email after we had a one hour phone chat about this topic last week.  </div><div class=""><br class=""></div><div class="">I'm disappointed you are still raising concerns I addressed and explained to you last week. </div><div class=""><br class=""></div><div class="">Random v2 is in flight. You are welcome to stop being involved. </div><div class=""><br class=""><div class="gmail_quote"><div class="">On Tue, Jan 24, 2017 at 10:19 AM Adam Bergmark <<a href="mailto:adam@bergmark.nl" class="">adam@bergmark.nl</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">On Tue, 24 Jan 2017 at 14:36 Dominic Steinitz <<a href="mailto:dominic@steinitz.org" class="gmail_msg" target="_blank">dominic@steinitz.org</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I wanted to give an update on the status of random numbers in Haskell.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class=""> 1. It is well known that the random number generator package<br class="gmail_msg"><br class=""><br class="">    <a href="https://hackage.haskell.org/package/random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/random</a> gives unexpected<br class="gmail_msg"><br class=""><br class="">    results.<br class="gmail_msg"><br class=""><br class=""> 2. Most people do *not* use it. I believe<br class="gmail_msg"><br class=""><br class="">    <a href="https://hackage.haskell.org/package/mwc-random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/mwc-random</a> is a popular choice<br class="gmail_msg"><br class=""><br class="">    but developers are free to use e.g. Mersenne Twister, PCG<br class="gmail_msg"><br class=""><br class="">    (Permuted Congruential Generator), TF (ThreeFish) and many others.<br class="gmail_msg"><br class=""><br class=""> 3. Approximately 2 years, I made a proposal to replace the algorithm<br class="gmail_msg"><br class=""><br class="">    within random (<a href="https://hackage.haskell.org/package/random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/random</a>) with<br class="gmail_msg"><br class=""><br class="">    that used by tf-random<br class="gmail_msg"><br class=""><br class="">    (<a href="https://hackage.haskell.org/package/tf-random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/tf-random</a>) which is used by<br class="gmail_msg"><br class=""><br class="">    QuickCheck. In summary, the response to this was that someone<br class="gmail_msg"><br class=""><br class="">    should do more research with the result that nothing happened.<br class="gmail_msg"><br class=""><br class=""> 4. In the meantime, random<br class="gmail_msg"><br class=""><br class="">    (<a href="https://hackage.haskell.org/package/random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/random</a>) is *no longer* a core<br class="gmail_msg"><br class=""><br class="">    library. It's just a library with the same status as<br class="gmail_msg"><br class=""><br class="">    e.g. mwc-random. However, it has one difference: it uses the name<br class="gmail_msg"><br class=""><br class="">    for its module: "System.Random". Other RNGs use<br class="gmail_msg"><br class=""><br class="">    "System.Random.MWC", "System.Random.PCG", "System.Random.Mersenne"<br class="gmail_msg"><br class=""><br class="">    etc.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">As a maintainer of random<br class="gmail_msg"><br class=""><br class="">(<a href="https://hackage.haskell.org/package/random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/random</a>), my proposal now is to<br class="gmail_msg"><br class=""><br class="">deprecate all of it.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">I am not clear what the policy is on namespace usage. Could every RNG<br class="gmail_msg"><br class=""><br class="">use the module name "System.Random"? Or is this somehow reserved? If<br class="gmail_msg"><br class=""><br class="">the latter then I propose that *nothing* uses this name and that all<br class="gmail_msg"><br class=""><br class="">RNGs should add a suffix indicating which algorithm they use.<br class="gmail_msg"></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></div></div><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">They *could* use the same namespace but I don't recommend it. If someone depends on two of these packages they would have to use PackageImports. Tools such as doctest break if a package db has module conflicts, even if only one of the packages is listed as a dependency.</div><div class="gmail_msg"> </div><div class="gmail_msg">Cheers,</div><div class="gmail_msg">Adam</div></div></div><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">I note that the Haskell Platform contains tf-random so users of this<br class="gmail_msg"><br class=""><br class="">will still be able to generate (better) random numbers.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">If someone comes along in the future, as I hope they do, and<br class="gmail_msg"><br class=""><br class="">implements e.g. Guy Steele's splitmix algorithm then this can occupy<br class="gmail_msg"><br class=""><br class="">the name "System.Random.Splitmix" and have the package name<br class="gmail_msg"><br class=""><br class="">"random-splitmix".<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">The advantages of doing this are:<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class=""> 1. Neophyte (and experienced) Haskellers do not accidentally use an<br class="gmail_msg"><br class=""><br class="">    RNG which gives unexpected results.<br class="gmail_msg"><br class=""><br class=""> 2. No-one will any longer be able to write blogs or papers about this<br class="gmail_msg"><br class=""><br class="">    embarrassing aspect of Haskell.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">I believe the co-maintainer of random<br class="gmail_msg"><br class=""><br class="">(<a href="https://hackage.haskell.org/package/random" rel="noreferrer" class="gmail_msg" target="_blank">https://hackage.haskell.org/package/random</a>), Carter Schonwald, has a<br class="gmail_msg"><br class=""><br class="">different view on this matter but it is best he speaks for himself<br class="gmail_msg"><br class=""><br class="">rather than me imperfectly trying to reflect his thinking.<br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">Dominic Steinitz<br class="gmail_msg"><br class=""><br class=""><a href="mailto:dominic@steinitz.org" class="gmail_msg" target="_blank">dominic@steinitz.org</a><br class="gmail_msg"><br class=""><br class=""><a href="http://idontgetoutmuch.wordpress.com/" rel="noreferrer" class="gmail_msg" target="_blank">http://idontgetoutmuch.wordpress.com</a><br class="gmail_msg"><br class=""><br class=""><br class="gmail_msg"><br class=""><br class="">_______________________________________________<br class="gmail_msg"><br class=""><br class="">Libraries mailing list<br class="gmail_msg"><br class=""><br class=""><a href="mailto:Libraries@haskell.org" class="gmail_msg" target="_blank">Libraries@haskell.org</a><br class="gmail_msg"><br class=""><br class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" class="gmail_msg" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br class="gmail_msg"><br class=""><br class=""></blockquote></div></div><br class=""><br class="">_______________________________________________<br class="gmail_msg"><br class="">Libraries mailing list<br class="gmail_msg"><br class=""><a href="mailto:Libraries@haskell.org" class="gmail_msg" target="_blank">Libraries@haskell.org</a><br class="gmail_msg"><br class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" class="gmail_msg" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br class="gmail_msg"><br class=""></blockquote></div></div>
</div></blockquote></div><br class=""><div class="">
<div class="">Dominic Steinitz</div><div class=""><a href="mailto:dominic@steinitz.org" class="">dominic@steinitz.org</a></div><div class=""><a href="http://idontgetoutmuch.wordpress.com" class="">http://idontgetoutmuch.wordpress.com</a></div>

</div>
<br class=""></div></body></html>