
On Fri, Dec 18, 2009 at 02:13:02PM +0000, John Lato wrote:
So now the program needs a result of some type (String in your example) and gets an undefined, and then immediately crashes with an "Exception - undefined" error.
I think this is the second time this is said in this thread, but please don't as it may confuse the OP. "undefined"s, including those generated by missing cases, do *not* crash the program. They also do not *immediately* close the program. They are propagated as exceptions are, however most of the time we write programs without explicitly catching them. So the proper wording would be that the "undefined"s propagate through the functions and whenever they reach the top function (i.e. main), they are caught by the runtime system, which prints the String associated with the "undefined" and exits the proccess with an error code. I should note also that *pure* code *can't* catch those "undefined"s. If they could, then Nasty Things Would Happen(TM) and we don't want that. However IO code may catch them without any problem using Control.Exception's functions. HTH and clarifies things, -- Felipe.