
On Sat, 14 Jun 2008, Neil Mitchell wrote:
Hi
* error - inserted by the compiler
Example?
Pattern-match errors.
Calling a function with patterns it cannot process is a programming error.
* 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.
Disagree. I mean more like:
when (Delete `elem` flags && Keep `elem` flags) $ abort "User cannot pick both keep and delete on the command line"
Think "die" in Perl world.
I wouldn't use such a function, because it does not scale. E.g. I cannot code a loop which lets the user enter flags until they match the conditions. Thus instead of 'abort' I would throw an exception - which is equivalent to the use of an exceptional value like Nothing or Left in Haskell (maybe wrapped in ErrorT).