4

当我尝试编译下面的清单时

import System.Environment(getArgs)
import System.Exit
import Control.Monad(when)
main = do 
    args <- getArgs
    when (length args /= 2) $ do
        putStrLn "Syntax: passwd-al filename uid"
        existFailure

编译器抱怨:函数“putStrLn”应用于两个参数。但显然它只需要一个字符串,existFailure 只是 System.Exit 的另一个 IO 操作。

如何解决这个问题?

4

1 回答 1

9

我没有遇到这样的错误putStrLn-在您发布的代码中很好(注意间距可能不同,因此不会复制制表符,而是仅通过空格显示缩进,这对 Haskell 很重要)。

但是,您有existFailure,我认为这真的很酷,但您可能打算使用该功能exitFailureexist注意和之间的区别exit

于 2013-06-13T06:03:49.033 回答