<div dir="ltr">Just want to bump this request as I have not gotten a reply.<div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 16, 2017 at 1:45 PM, Dennis Raddle <span dir="ltr"><<a href="mailto:dennis.raddle@gmail.com" target="_blank">dennis.raddle@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I am wondering what exception/error and random classes I should use for my application.<div><br></div><div>The application will be doing Monte Carlo backtracking search. I want it to be multithreaded and run on all four cores on my MacBook. </div><div><br></div><div>I need detailed error messages in order to investigate errors. So I will throw errors or exceptions, then catch them in lower functions and annotate them with the parameters or computations within the lower function, then re-throw until finally the exception pops into the terminal.</div><div><br></div><div>Because it's multi-threaded, at least some parts will needs to be in IO. Also, because it's a Monte Carlo algorithm it will need to make pseudorandom choices.</div><div><br></div><div>Perhaps I should put everything in the IO monad? This will give me access to threads and the standard generator seed. But how about throwing, catching/rethrowing exceptions in IO? I have done this in pure code before: not sure if it's better to do it that way, in which case I could put some kind of state monad to hold the random seed together with an error monad and IO at the core of the monad stack.</div><div><br></div><div>Any advice welcome.</div><span class="HOEnZb"><font color="#888888"><div>D</div><div><br></div></font></span></div>
</blockquote></div><br></div></div>