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' が 2 つの引数に適用されます。しかし、明らかにそれは 1 つの文字列しか必要とせず、existFailure は System.Exit からの別の IO アクションです。

これを修正するには?

4

1 に答える 1

9

そのようなエラーは発生しませんputStrLn-投稿したコードで問題ありません(スペースが異なる場合があることに注意してください。SOはタブを再現せず、スペースを介してインデントのみを表示します。これはHaskellにとって重要です)。

しかし、あなたは を持っていますexistFailure。これは本当にクールだと思いますが、おそらく関数 を使用するつもりですexitFailure。と の違いに注意してexistくださいexit

于 2013-06-13T06:03:49.033 に答える