Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何在haskell中关闭文件_File_Haskell - Fatal编程技术网

File 如何在haskell中关闭文件

File 如何在haskell中关闭文件,file,haskell,File,Haskell,我和haskell有问题。。。 我正在haskell中打开一个文件,然后我想在该文件中添加一些文本 ame :: IO () ame = do putStr "Enter the file name: " name <- getLine file <- readFile name putStrLn "Do you want to add new records? " question <- getLine if question

我和haskell有问题。。。 我正在haskell中打开一个文件,然后我想在该文件中添加一些文本

ame :: IO ()

ame = do
    putStr "Enter the file name: "
    name <- getLine
    file <- readFile name
    putStrLn "Do you want to add new records? "
    question <- getLine
    if question == "yes" then do
        putStrLn "Enter your records:"
        newRec <- getLine
        file <- writeFile name (file ++ newRec)

        putStrLn "a"
    else
        putStr "b"
ame::IO()
ame=do
putStr“输入文件名:”

name
writeFile
返回
IO()


只需使用
writeFile name(file++newRec)
而不使用
file函数
readFile
就可以使用“lazy IO”,这是Haskell语言的一个有争议的特性(注意:“lazy IO”与“lazy evaluation”不同)


当你说
文件谢谢。它确实奏效了。但我现在还有一个问题..我在我的文件中添加了新记录。但它把这些记录放在同一行。有没有办法将这些记录放在单独的行上?要将记录放在单独的行上,只需在需要的地方添加换行符即可。例如,
appendFile name('\n':newRec)
file <- writeFile name (file ++ newRec)
writeFile name (file ++ newRec)
appendFile :: FilePath -> String -> 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 newRec
        putStrLn "a"
    else
        putStr "b"
import Control.DeepSeq
import Control.Exception

ame :: IO ()
ame = do
    putStr "Enter the file name: "
    name <- getLine
    file <- readFile name
    evaluate (force file)
    putStrLn "Do you want to add new records? "
    question <- getLine
    if question == "yes" then do
        putStrLn "Enter your records:"
        newRec <- getLine
        file <- writeFile name (file ++ newRec)
        putStrLn "a"
    else
        putStr "b"