内部阻塞的Haskell Parse错误

时间:2013-04-21 15:19:47

标签: haskell indentation

我收到以下错误...

  

输入`args'

时解析错误

...在尝试编译以下代码时:

import System.Environment (getArgs)

interactWith function inputFile outputFile = do 
    input <- readFile inputFile
    writeFile outputFile (function input)

main = mainWith myFunction   
    where mainWith function = do
        args <- getArgs  
        case args of
            [input,output] -> interactWith function input output 
            _ -> putStrLn "error: exactly two arguments needed"

        -- replace "id" with the name of our function below 
        myFunction = id

代码取自 Real World Haskell 的第4章。

2 个答案:

答案 0 :(得分:2)

问题是缩进。在书中我无法正确解释缩进。 代码应该是这样的:

import System.Environment (getArgs)

interactWith function inputFile outputFile = do 
    input <- readFile inputFile
    writeFile outputFile (function input)

main = mainWith myFunction   
    where 
        mainWith function = do
            args <- getArgs  
            case args of
                [input,output] -> interactWith function input output 
                _ -> putStrLn "error: exactly two arguments needed"

        -- replace "id" with the name of our function below 
        myFunction = id

我学习Haskell时遇到的一个更大的问题是模糊的编译错误。

答案 1 :(得分:0)

你问题中的缩进代码是正确的。 你可能在你的代码中加入了一个。有很多方法可以强制你的编辑器用4个空格替换每个标签。