Should exhaustiveness testing be on by default?

Peter Hercek phercek at gmail.com
Wed May 20 06:27:46 EDT 2009


I was looking for something which works in optimized builds too.
I know I could do it with preprocessor or (I think) template haskell too 
but these tools seem to heavy for such a simple goal.
The point is the exhaustiveness check saves me from some errors 
sometimes, but I often need to switch it off for a specific case 
statement too. Adding an catch all alternative and an error call would 
be cool way to do it if there is a way to automatically add source code 
location. This way I could get the best error telling me where it 
happend and also why I thought the other alternatives should not happen 
(the error call argument).

Thanks,
Peter.

Simon Peyton-Jones wrote:
> Yes indeed
> http://www.haskell.org/ghc/docs/latest/html/users_guide/assertions.html
>
> Simon
>
> | -----Original Message-----
> | From: glasgow-haskell-users-bounces at haskell.org [mailto:glasgow-haskell-users-
> | bounces at haskell.org] On Behalf Of Peter Hercek
> | Sent: 18 May 2009 10:46
> | To: glasgow-haskell-users at haskell.org
> | Subject: Re: Should exhaustiveness testing be on by default?
> |
> | Neil Mitchell wrote:
> | > I'm not a particular fan of exhaustiveness checking. It just
> | > encourages people to write:
> | >
> | > foo (Just 1) [x:xs] = important case
> | > foo _ _ = error "doh!"
> | >
> | > So now when the program crashes, instead of getting a precise and
> | > guaranteed correct error message, I get "doh!" - not particularly
> | > helpful for debugging
> | Is there some compile option to automatically annotate error call with
> | its source
> |  code location (so that one dos not need to mention it in the string
> | argument)?
> |
> | Peter.
> |
> | _______________________________________________
> | Glasgow-haskell-users mailing list
> | Glasgow-haskell-users at haskell.org
> | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>   



More information about the Glasgow-haskell-users mailing list