如何将用户 - 输入附加到文件Haskell中

时间:2014-03-04 17:08:19

标签: file haskell append

我试图将用户的一些输入附加到文件中。但是我收到一个奇怪的错误...它说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"

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:4)

使用空格而不是标签

您在文件中使用了标签和空格的混合。这往往会引起混淆,因为你,你的编辑和Haskell倾向于以不同的方式解释这些。

将代码中的所有选项卡替换为适当数量的空格以排列它们,您将不再收到这些神秘错误。

让你的编辑缩进

许多编辑器都有一个设置,其中tab键为您提供适当数量的空格,按Enter键会添加空格以使用前一个文本排列,而退格键则会使您前一个缩进。这些设置非常方便 - 打开它们。

您的错误消息:为什么

特别是,在您的第一个问题中,它认为appendFile是一种模式,在此版本中它认为putStrLn "enter something new again: "是前一行的一部分,因为它比您想象的更进一步缩进。如果你点击你的问题编辑(没有改变任何东西),你会发现它没有排队。