当我尝试编译下面的列表时
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'应用于两个参数。 但显然它只需要一个String而existsFailure只是System.Exit的另一个IO动作。
如何解决这个问题?
答案 0 :(得分:9)
我的putStrLn
没有出现这样的错误 - 你发布的代码没问题(通知间距可能不同,SO不会重现标签,而只是通过空格显示缩进,这对Haskell很重要)。 / p>
但是,你有existFailure
,我觉得这很酷,但你可能想要使用函数exitFailure
。请注意exist
和exit
之间的区别。