Proposal: Add die to System.Exit (and/or Prelude)
Simon Hengel
sol at typeful.net
Sat Dec 14 11:33:16 UTC 2013
On Sat, Dec 14, 2013 at 12:09:20PM +0100, Vo Minh Thu wrote:
> Isn't your `die` function a special case of `error :: String -> a`,
> which is in the Prelude ?
No, it's not. I'm not going into the details of imprecise exceptions
(and GHC's interpretation of them + all the bugs that various versions
of GHC have when it comes to that topic), but `error` indicates a
programmer error and should not be part of a valid path in your program.
In contrast, `die` is meant to be used when a user e.g. passes wrong
input to a program (which is a user error, not a programmer error).
> I think variants of what you propose are often used: different exit
> codes, not exiting and flushing stderr
You can just use hPutStrLn here, stderr is unbuffered by default.
> displaying an arbitrary `Show a` instead of `String`
Yes, that is actually a good point. But
die (show x)
is still much more concise than using hPrint + exitFailure.
> using `Text`
Valid point. Still, I think for the particular case of error messages
it's ok to stick with String.
Cheers.
More information about the Libraries
mailing list