<div>This is not a core library or blessed libraries issue. This is a communication issue. You don't want to be involved in the v2 work.  That's fine. </div><div><br></div><div><br><div class="gmail_quote"><div>On Tue, Jan 24, 2017 at 10:55 AM <<a href="mailto:dominic@steinitz.org">dominic@steinitz.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg">Carter,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">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="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">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="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">What do you see sub-optimal about deprecating something that is clearly broken?</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">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><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Dominic.</div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On 24 Jan 2017, at 15:33, Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" class="gmail_msg" target="_blank">carter.schonwald@gmail.com</a>> wrote:</div><br class="m_-2085164305722152886Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div class="gmail_msg">Dominic, if you want to remove yourself from maintainer hood that's cool. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I'm keen on finishing up my random v2 release which is a much improved breaking Change.  </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I spent part of my holiday this year working on it. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">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="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I'm disappointed you are still raising concerns I addressed and explained to you last week. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Random v2 is in flight. You are welcome to stop being involved. </div><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">On Tue, Jan 24, 2017 at 10:19 AM Adam Bergmark <<a href="mailto:adam@bergmark.nl" class="gmail_msg" target="_blank">adam@bergmark.nl</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"><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="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 1. It is well known that the random number generator package<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    <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="gmail_msg"><br class="gmail_msg">    results.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 2. Most people do *not* use it. I believe<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    <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="gmail_msg"><br class="gmail_msg">    but developers are free to use e.g. Mersenne Twister, PCG<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    (Permuted Congruential Generator), TF (ThreeFish) and many others.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 3. Approximately 2 years, I made a proposal to replace the algorithm<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    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="gmail_msg"><br class="gmail_msg">    that used by tf-random<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    (<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="gmail_msg"><br class="gmail_msg">    QuickCheck. In summary, the response to this was that someone<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    should do more research with the result that nothing happened.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 4. In the meantime, random<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    (<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="gmail_msg"><br class="gmail_msg">    library. It's just a library with the same status as<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    e.g. mwc-random. However, it has one difference: it uses the name<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    for its module: "System.Random". Other RNGs use<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    "System.Random.MWC", "System.Random.PCG", "System.Random.Mersenne"<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    etc.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">As a maintainer of random<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">(<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="gmail_msg"><br class="gmail_msg">deprecate all of it.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">I am not clear what the policy is on namespace usage. Could every RNG<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">use the module name "System.Random"? Or is this somehow reserved? If<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">the latter then I propose that *nothing* uses this name and that all<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">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="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">I note that the Haskell Platform contains tf-random so users of this<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">will still be able to generate (better) random numbers.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">If someone comes along in the future, as I hope they do, and<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">implements e.g. Guy Steele's splitmix algorithm then this can occupy<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">the name "System.Random.Splitmix" and have the package name<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">"random-splitmix".<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">The advantages of doing this are:<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 1. Neophyte (and experienced) Haskellers do not accidentally use an<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    RNG which gives unexpected results.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"> 2. No-one will any longer be able to write blogs or papers about this<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">    embarrassing aspect of Haskell.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">I believe the co-maintainer of random<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">(<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="gmail_msg"><br class="gmail_msg">different view on this matter but it is best he speaks for himself<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">rather than me imperfectly trying to reflect his thinking.<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">Dominic Steinitz<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><a href="mailto:dominic@steinitz.org" class="gmail_msg" target="_blank">dominic@steinitz.org</a><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><a href="http://idontgetoutmuch.wordpress.com/" rel="noreferrer" class="gmail_msg" target="_blank">http://idontgetoutmuch.wordpress.com</a><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">_______________________________________________<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">Libraries mailing list<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><a href="mailto:Libraries@haskell.org" class="gmail_msg" target="_blank">Libraries@haskell.org</a><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><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="gmail_msg"><br class="gmail_msg"></blockquote></div></div><br class="gmail_msg"><br class="gmail_msg">_______________________________________________<br class="gmail_msg"><br class="gmail_msg">Libraries mailing list<br class="gmail_msg"><br class="gmail_msg"><a href="mailto:Libraries@haskell.org" class="gmail_msg" target="_blank">Libraries@haskell.org</a><br class="gmail_msg"><br class="gmail_msg"><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="gmail_msg"></blockquote></div></div><br><br></div></blockquote></div><br class="gmail_msg"><div class="gmail_msg"><br><br><div class="gmail_msg">Dominic Steinitz</div><div class="gmail_msg"><a href="mailto:dominic@steinitz.org" class="gmail_msg" target="_blank">dominic@steinitz.org</a></div><div class="gmail_msg"><a href="http://idontgetoutmuch.wordpress.com" class="gmail_msg" target="_blank">http://idontgetoutmuch.wordpress.com</a></div><br><br><br><br></div><br><br><br class="gmail_msg"></div></div></blockquote></div></div>