在Haskell中,我們試圖通過不改變變量或傳遞參數來以不可變的方式編寫大部分代碼,而是通過所需的更改從舊的創建新值。爲什麼不hSetBuffering返回一個新的句柄,而不是改變給定的句柄?
main = do
withFile "something.txt" ReadMode (\handle -> do
hSetBuffering handle $ BlockBuffering (Just 2048)
contents <- hGetContents handle
putStr contents)
那麼是什麼原因比hSetBuffering
,這需要一個手柄,並將其緩衝模式的功能,改變了傳遞的handle
本身,而不是用所需的緩衝模式返回一個新手柄?
對於您只能讀取緩衝區,這可能是好的,但有兩個手柄,以具有獨立的緩衝器一樣可寫的對象聽起來像瘋狂的良方。 –