[Haskell-cafe] MonadError vs Control.Exception

Albert Y. C. Lai trebla at vex.net
Sat May 5 22:09:59 CEST 2012

On 12-05-04 07:03 PM, Станислав Черничкин wrote:
> Hi, guys, I'm interested in best practices in using of each approach.
> Personally I like MonadError because it is more explicit and
> Control.Exception-s becomes really ugly in complex scenarios.


> User has to deal with
> both, but have no evidence on none of them from type signatures or
> documentation.

My opinion is largely recorded in my sarcastic
Be sure to click the "click me if you can" button and read again.

My sarcastic article focuses on control flow and doesn't comment on 
types. I agree about seeing exception possibilities in types. But that 
was done 8 years ago:

> So, I hate exceptions, I blame it, I think exceptions is junk came
> from OO-world and horrible languages like C# or even more horrible
> like Java, and it should be wiped out from Haskell with fire. But it
> is only my humble opinion.

While you are entitled to have opinions, and I am fine with those parts 
about "I hate exceptions, exceptions is junk", it is irresponsible and 
unreasonable to use that right on objective, verifiable, historical 
facts. Yes, I really hate it when people do that. "I think Oleg is from 
Vulcus" without even asking anyone. "I think everyone uses Java" without 
hard data. Programmers' habit of subsituting "thinking" for empirical 
facts is one of many reasons why the software profession has not yet 
earned the engineering status.

The only two responsible, reasonable positions are:

1. find the answer
2. hold the position that you just don't know

Exceptions appeared as early as in ML and Ada in the 1980s, before many 
people knew OO, before ML or Ada got OO stuff, before Java or C# existed 
(or when Java was an internal project under two old names at Sun), even 
before C++ got exceptions. Exceptions first appeared under another name 
in the paper of David Parnas and Harald Würges "response to undesired 
events in software systems" in ICSE 1976. Exceptions did not come from 
OO or languages you mentioned, and this is not about opinion.

More information about the Haskell-Cafe mailing list