需要一个输出的类似物 = 输入( "ask something" ) 在哈斯克尔


import System.IO
fileName = "data.txt"
main = do
putStr "Enter Point :"
information <- getLine
let final = ['n'] ++ information
appendFile fileName final
putStrLn "Done !"

编译成功,但存在运行时错误:程序首先请求输入,然后执行putStr函数。

hello
Enter Point :Done !

我认为应该解释为什么Haskell没有遵循这个序列(也许是因为它的功能性质(。如有任何解释,我们将不胜感激!(我是功能范式的新手(

它遵循顺序,它只是缓冲`Enter Point:"部分原因是标准缓冲策略是等待下一行写入输出通道。

您可以使用以下内容刷新标准输出通道:

import System.IO
fileName = "data.txt"
main = do
putStr "Enter Point :"
hFlush stdout-- flush the output channel
information <- getLine
let final = ['n'] ++ information
appendFile fileName final
putStrLn "Done !"

最新更新