為什么bracket函式叫括號?
我認為它與型別簽名語法有關;型別簽名中使用方括號來表示函式。讓我們看看函式映射的型別簽名:
map :: (a -> b) -> [a] -> [b]
map 的第一個引數是一個函式。
現在,讓我們來看看bracketHackage。
bracket:: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
支架:https ://hackage.haskell.org/package/base-4.16.0.0/docs/Control-Exception.html#v:bracket
好的我明白了,括號的引數是帶有IO動作的函式。
Hackage 使用示例bracket如下:
bracket
(openFile "filename" ReadMode)
(hClose)
(\fileHandle -> do { ... })
考慮了一段時間后,我認為“支架”這個名字不太好。
我會說“performResourceSafely”會更合適。
所以我再問:為什么bracket函式叫括號?
uj5u.com熱心網友回復:
括號v. 在兩邊系結,包圍,用括號括起來
—維基詞典
它bracket所做的事情是將一些使用資源的操作與分配和釋放該資源的操作包裝在一起(注意確保即使在拋出例外時也會發生釋放)。因此,(解除)分配操作圍繞著——或括號——主要操作。
您提到的檔案示例特別具有啟發性。像“開括號”的[或(與“右括號”為]或)時,包圍行動“打開檔案”和“關閉檔案”(當然,“接近處理”)。這種平行是相當普遍的;例如,使用資料庫,打開和關閉連接,使用網路內容,打開和關閉會話,使用子行程,打開和關閉程式等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404595.html
標籤:
下一篇:Haskell,“是質數”函式
