[Haskell-cafe] exceptions, errors, random

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Tue Jun 20 08:40:35 UTC 2017

There are two general schools of thought as to how to deal with exceptions:

* ExceptT/MonadError from transformers/mtl:

* The exceptions package (which is a lifted variant of
Control.Exception in base):

On 20 June 2017 at 15:53, Dennis Raddle <dennis.raddle at gmail.com> wrote:
> Just want to bump this request as I have not gotten a reply.
> On Fri, Jun 16, 2017 at 1:45 PM, Dennis Raddle <dennis.raddle at gmail.com>
> wrote:
>> I am wondering what exception/error and random classes I should use for my
>> application.
>> The application will be doing Monte Carlo backtracking search. I want it
>> to be multithreaded and run on all four cores on my MacBook.
>> 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.
>> 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.
>> 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.
>> Any advice welcome.
>> D
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.

Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com

More information about the Haskell-Cafe mailing list