
On Tue, 11 Mar 2008, Donn Cave wrote:
On Mar 10, 2008, at 5:48 PM, Jonathan Cast wrote:
On 10 Mar 2008, at 12:37 AM, Donn Cave wrote: ...
An exception is, for me, any state that isn't properly accounted for in its immediate context. openFile could return 'Maybe Handle', but it doesn't, so the context demands a Handle or an exception.
In the context of this discussion, `Maybe Handle' /is/ an exception type, because Maybe is an exception monad. As is IO. This distinction is one between an unusual-but-anticipated code path, and a case the programmer simply didn't handle at all. The former is an exception; the latter is an error.
Thanks for that summary!
I am not sure I understand what you're saying. `Error' may be open to interpretation, but `exception' has a fairly unambiguous technical meaning in Haskell, a non-local flow of control with associated data type in Control.Exception.
The TRY construct for Maybe is called 'maybe', the exception handler is the first argument to 'maybe'. The absence of 'Maybe' after calling 'maybe' shows that the exception was handled.