Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: Irrelevant variables in patterns
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Chet Murthy <murthy@p...>
Subject: Re: Irrelevant variables in patterns

>>>>> On Sat, 28 May 1994 11:36:02 -0000, Christophe Raffalli <cr@dcs.ed.ac.uk> 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--