繼haskell tutorial實現,筆者提供了以下實施withFile方法:如何withFile在Haskell
withFile' :: FilePath -> IOMode -> (Handle -> IO a) -> IO a
withFile' path mode f = do
handle <- openFile path mode
result <- f handle
hClose handle
return result
,但爲什麼我們需要包裝的result
在return
?提供的功能f
是否已返回IO
,如其類型Handle -> IO a
所示?
哦,哦!完全錯過了_sucking_'<-'操作符! – drozzy 2011-12-19 20:26:03
它也可以'讓結果= f處理; h關閉手柄;結果「還是我再次失敗monad理解? – delnan 2011-12-19 20:44:58
@delnan that would'do {handle < - openFile mode path; h關閉手柄; f把手; }',所以'f handle'可能會抱怨關閉的句柄。 – 2011-12-19 20:55:15