这个示例程序中的缩进错误是什么?

时间:2015-02-06 18:32:39

标签: haskell indentation

我看不出为什么会出现缩进错误

  

[1/1]编译Main(main.hs,main.o)

     

main.hs:19:17:对输入`case'

的解析错误

每个缩进都设置了标签

我是否需要使用空格而不是制表符?

import Text.ParserCombinators.Parsec

csvFile = endBy line eol
line = sepBy cell (char ',')
cell = many (noneOf ",\n\r")

eol =   try (string "\n\r")
    <|> try (string "\r\n")
    <|> string "\n"
    <|> string "\r"
    <|> fail "Couldn't find EOL"

parseCSV :: String -> Either ParseError [[String]]
parseCSV input = parse csvFile "(unknown)" input


main =
    do c <- getContents
        case parse csvFile "(stdin)" c of
            Left e -> do putStrLn "Error parsing input:"
                        print e
            Right r -> mapM_ print r

1 个答案:

答案 0 :(得分:1)

如果您的代码与此处的代码完全相同,则问题是casec <- getContents之上的代码不一致;你需要用一个空间来代替它。此外,您需要将print e缩进一个空格,以便与putStrLn "Error parsing input:"对齐。