2013-06-13 2 views
4

, когда я пытаюсь скомпилировать ниже листингHaskell I/O, putStrLn применяется к двум аргументам

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» применяется к двум аргументам. , но, очевидно, требуется только одна строка и существует. Failure - это еще одно действие IO из System.Exit.

как исправить это?

+11

Эта ошибка может произойти только в том случае, если компилятор видит последнюю строку с отступом дальше предыдущей. Удалите все вкладки из своего кода и вместо этого используйте пробелы, следя за тем, чтобы эти две последние строки выстроились в линию. Измените настройки в своем редакторе, чтобы при нажатии вкладки вставлено соответствующее количество пробелов или избегайте клавиши вкладки. – AndrewC

ответ

9

Однако у вас есть existFailure, что, я думаю, действительно круто, но вы, вероятно, имеете в виду использовать функцию exitFailure. Обратите внимание на разницу между exist и exit.

Смежные вопросы