C和C ++允许我们从main
返回退出代码。为什么Haskell不这样做?在我看来,这很简单;只需要main :: IO Int
而不是IO t
。
我意识到以下内容不会像C程序员所期望的那样起作用:
main :: IO Int
main = do
return 1 -- Execution continues, thanks to (>>)
putStrLn "Unreachable?"
return 2 -- Exit code 2?
这种退出代码执行起来可能有些棘手,但实际上有多棘手?对我来说,似乎比必须导入System.Exit
好。
答案 0 :(得分:8)
这不值得。 99%的Haskell程序只会做return 0
,那是纯粹的样板。当异常(System.Exit
利用的异常)已经做得很好时,它为错误提供了一个非常具体的渠道。您实际上需要多久导入一次System.Exit
以获得细粒度的返回码?