[Haskell-cafe] Use unsafePerformIO to catch Exception?

Jules Bean jules at jellybean.co.uk
Thu Mar 26 09:54:45 EDT 2009

wren ng thornton wrote:
> I have long been disappointed by a number of `error`s which shouldn't 
> be. For example, the fact that `head` and `div` are not total strikes me 
> as a (solvable) weakness of type checking, rather than things that 
> should occur as programmer errors/exceptions at runtime. The use of 
> `error` in these cases muddies the waters and leads to a laissez-faire 
> attitude about when it's acceptable to throw one's hands up in despair 
> and use `error` rather than writing a better function.

head uses "error" in precisely the correct, intended fashion.

head has a precondition (only call on non-empty lists) and the "error" 
is just there to give you some hint that you made a mistake - got the 
precondition wrong.

It's certainly not intended to be catchable. And that is a correct use 
of error.

There are programming styles which avoid using 'head'. You are free to 
use those if you don't like it. I myself am content to use 'head' on 
lists which I know are guaranteed to be non-empty.


More information about the Haskell-Cafe mailing list