do 块中的解析错误
Parse errors in do-blocks
当我尝试将以下代码加载到 ghci 时
import System.Environment (getArgs)
import System.IO
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"
myFunction = id
它产生 error: parse error on input ‘args’
。但是我不清楚是什么产生了问题,我无法通过查看解析错误问题的答案来判断问题是什么。
为什么会产生错误?
您需要修复程序的缩进。 do
块下的项目应比 where
子句中定义的开头至少向右缩进一列。您还应该缩进 case … of
子句下的大小写:
import System.Environment (getArgs)
import System.IO
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"
myFunction = id
当我尝试将以下代码加载到 ghci 时
import System.Environment (getArgs)
import System.IO
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"
myFunction = id
它产生 error: parse error on input ‘args’
。但是我不清楚是什么产生了问题,我无法通过查看解析错误问题的答案来判断问题是什么。
为什么会产生错误?
您需要修复程序的缩进。 do
块下的项目应比 where
子句中定义的开头至少向右缩进一列。您还应该缩进 case … of
子句下的大小写:
import System.Environment (getArgs)
import System.IO
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"
myFunction = id