在Haskell中,我们试图通过不改变变量或传递参数来以不可变的方式编写大部分代码,而是通过所需的更改从旧的创建新值。为什么不hSetBuffering返回一个新的句柄,而不是改变给定的句柄?
main = do
withFile "something.txt" ReadMode (\handle -> do
hSetBuffering handle $ BlockBuffering (Just 2048)
contents <- hGetContents handle
putStr contents)
那么是什么原因比hSetBuffering
,这需要一个手柄,并将其缓冲模式的功能,改变了传递的handle
本身,而不是用所需的缓冲模式返回一个新手柄?
对于您只能读取缓冲区,这可能是好的,但有两个手柄,以具有独立的缓冲器一样可写的对象听起来像疯狂的良方。 –