【发布时间】:2019-10-28 20:19:15
【问题描述】:
我对同一个函数有三个定义:
prompt :: String -> IO String
prompt = (getLine <*) . (hFlush stdout <*) . putStrLn
prompt' :: String -> IO String
prompt' str = do
putStrLn str
hFlush stdout
getLine
prompt'' :: String -> IO String
prompt'' str = putStrLn str >> hFlush stdout >> getLine
prompt' 和 prompt'' 都在运行 getLine 之前刷新标准输出,但不是 prompt。这是为什么呢?
【问题讨论】:
标签: haskell io monads lazy-evaluation pointfree