[Haskell-cafe] Documenting the impossible
Henning Thielemann
lemming at henning-thielemann.de
Sat Jun 14 17:40:25 EDT 2008
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).
More information about the Haskell-Cafe
mailing list