<div class="gmail_quote">On Mon, Oct 12, 2009 at 11:01 AM, Bryan O&#39;Sullivan <span dir="ltr">&lt;<a href="mailto:bos@serpentine.com">bos@serpentine.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><br><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Pseudorandomness seems like one case where it would just be a hell of a lot simpler to have a global generator--never split the state. Is the ST monad some way to accomplish this?</blockquote></div><div><br>Having [...]<br>
</div></div></blockquote><div><br>Feh, gmail fail.<br><br>Having a global generator is not actually a good thing, since it has to live <i>somewhere</i>. If you keep its existence implicit, it becomes slow, since you have to lock it against concurrent use by multiple threads. If you make it explicit, you have to plumb the thing all over the place by hand, which is also nasty. The advantage of putting the PRNG in the ST monad is that you can seed a new PRNG close to the point where you&#39;ll need it, and not need to pass around so much state.<br>
<br><br></div></div>