From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by pauillac.inria.fr; Mon, 30 May 94 11:19:43 +0200 Received: from margaux.inria.fr by pauillac.inria.fr; Sat, 28 May 94 12:43:32 +0200 Received: from pauillac.inria.fr by margaux.inria.fr, Sat, 28 May 1994 12:43:31 +0200 Received: from localhost.inria.fr by pauillac.inria.fr; Sat, 28 May 94 12:43:30 +0200 To: Christophe Raffalli Cc: Chet.Murthy@inria.fr, Judicael.Courant@lip.ens-lyon.fr, caml-list@margaux.inria.fr Subject: Re: Irrelevant variables in patterns In-Reply-To: Your message of Sat, 28 May 1994 11:36:02 -0000. <13319.9405281036@colonsay.dcs.ed.ac.uk> Date: Sat, 28 May 1994 12:43:29 +0200 Message-Id: <29438.770121809@pauillac.inria.fr> From: Chet Murthy Sender: weis@pauillac.inria.fr >>>>> On Sat, 28 May 1994 11:36:02 -0000, Christophe Raffalli said: >>>La solution serait plutot de fournir un warning lorsque l'on >>>capture toutes les exception, car cela est un bug dans 99% des cas >>>(on ne veut pas attraper Catch_break ou Out_of_memory en general). >But that doesn't work if I have 10 different exceptions in my program >- I am unwilling to write 10-way branches, as are most programmers. >Exceptions in ML are a programming mechanism. They are not used >anymore for exceptional conditions. We need a new mechanism for >that. CR> Ok, but as long as "Out_of_memory" and "catch_break" are CR> exceptions, if you don't write the ten cases, this is likely CR> to be a bug !! Actually, that's not the case. Often, I write: try blablab with (E1(x,y,z)) -> code1 | (E2(x,y,z)) -> code2 | e -> handle_exceptions_generally e ;; Now, that code ought to be written without consideration for things like Out_of_memory. Its like writing code in C to do signals. If you don't _explicitly_ mess with SIGSEGV, you can't screw yourself. Moreover, even if I _do_ write the code in handle_exceptions_generally to treat Out_of_memory, etc, I get many warnings telling me that I am catching the exception. The fact that there isn't a separation of exceptions into classes really limits their usefulness. At least, we need two classes - "signals" and "exceptions". "signals" would be thing which you have to register global handlers for. CR> Furthermore, I just asked for a warning ! this would catch the CR> attention of the programmer on a likely bug. but if he knowns CR> what he is doing, he is free to do so. Superfluous warning confuse the programmer, and cause him to disregard the warnings completely. Which can cause him real pain when it was a warning that he should have heeded. --chet--