我试图将用户的一些输入附加到文件中。但是我收到一个奇怪的错误...它说append只能接受2个参数,而不是4个。
这是代码:
ame :: IO ()
ame = do
putStr "Enter the file name: "
name <- getLine
putStrLn "Do you want to add new records? "
question <- getLine
if question == "yes" then do
putStrLn "Enter your records:"
newRec <- getLine
appendFile name ('\n':newRec)
putStrLn "enter something new: "
something <- getLine
appendFile name ('\n':something)
putStrLn "enter something new again: "
something2 <- getLine
appendFile name ('\n':something2)
putStrLn "a"
else
putStr "b"
有人可以帮我这个吗?
答案 0 :(得分:4)
使用空格而不是标签
您在文件中使用了标签和空格的混合。这往往会引起混淆,因为你,你的编辑和Haskell倾向于以不同的方式解释这些。
将代码中的所有选项卡替换为适当数量的空格以排列它们,您将不再收到这些神秘错误。
让你的编辑缩进
许多编辑器都有一个设置,其中tab键为您提供适当数量的空格,按Enter键会添加空格以使用前一个文本排列,而退格键则会使您前一个缩进。这些设置非常方便 - 打开它们。
您的错误消息:为什么
特别是,在您的第一个问题中,它认为appendFile
是一种模式,在此版本中它认为putStrLn "enter something new again: "
是前一行的一部分,因为它比您想象的更进一步缩进。如果你点击你的问题编辑(没有改变任何东西),你会发现它没有排队。