File 如何在haskell中关闭文件
我和haskell有问题。。。 我正在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
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“输入文件名:”
namewriteFile
返回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"