[Haskell-cafe] Exception handling when using STUArray

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Sun Mar 9 03:09:49 EDT 2008

On Mar 9, 2008, at 1:54 , Don Stewart wrote:

> donn:
>> This seems to me one of the disappointments of Haskell - not just a
>> detail that was handled in an awkward way, but a fundamental flaw.
>> I'm not talking about ArrayException, whatever that is, but the  
>> notion
>> that errors encountered in functional code mustn't be handled as
>> exceptions.
> I don't understand this complaint -- you can handle all these with  
> Control.Exception.
> xmonad catches all these things for example, in user code, to prevent
> poorly written modules throwing a pattern match exception, or calling
> 'error' and making the window manager unstable.
> Handling exceptions generated from pure code is just another part of
> making systems more robust -- and of course you can do it in Haskell.

I'm unsure what the complaint here is as well.

That exceptions must be handled in IO:  an exception is, by  
definition, an unexpected condition.  These simply can not exist in  
the deterministic paradigm of pure code, therefore you must be in IO  
(home of all things nondeterministic) to catch them.

That it is preferred to handle known cases without using exceptions:   
staying completely pure is cleaner, and gives you more control over  
what goes on.  And enables swapping in different mechanisms to react  
to failure; note how using the Monad instances of Maybe, Either, or  
[] allows you to decide how to handle failure (and [] allows you to  
support multiple possible results as well, while Maybe and Either  
will stop processing at the first.

Basically, the Haskell way is to make as much as possible pure and  
minimize the intrusion of IO.  Exceptions necessarily complicate  
this, so are when possible avoided in favor of pure alternatives,  
which are considered better style --- but they are available in IO if  

brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH

More information about the Haskell-Cafe mailing list