
On Sat, 14 Jun 2008, Neil Mitchell wrote:
Hi
How about a {-# IMPOSSIBLE #-} pragma that documents the fact that a particular point in the program *should* be unreachable?
Why not make it a function taking a string and returning a value of any type. Then we can keep our language and not break various parsing/type checking properties and rules on pragmas. We can even define it:
impossible = error
Now you can use tools like Catch and Reach to ensure it is impossible.
I think it would be nice to distinguish between:
* error - inserted by the compiler
Example?
* impossible - the programmer knows this can't occur
This is an error. However the programmer adds a message because he might be wrong.
* abort - deliberate aborting because the user made some mistake.
This is an exception. The signature of a function must reflect this by a Maybe, Either type etc. http://www.haskell.org/haskellwiki/Exception http://www.haskell.org/haskellwiki/Error