當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


haskell bracket用法及代碼示例

Haskell語言IO模塊中函數bracket的用法及代碼示例。

用法類型:

IO a -> (a -> IO b) -> (a -> IO c) -> IO c

捕獲常見的分配,計算,解除分配習慣用語,即使在計算過程中發生錯誤,也必須在其中進行重新分配步驟。這類似於Java中的try-catch-finally。

該函數計算第一個參數,並將其值傳遞給第二個和第三個參數。接下來將評估第三個參數,即使此參數的評估導致錯誤,第二個參數也將在最後一步被評估。

示例1:

源碼:

import IO

main = bracket (openFile "/tmp/foo.txt" ReadMode) (print)
               (\x -> return())

輸出:
{loc=/tmp/foo.txt,type=readable,binary=False,buffering=block (8192)}
         

示例2:

文件:/tmp/foo.txt
 : 

HELLO
源碼:

import IO

main = bracket (openFile "/tmp/foo.txt" ReadMode) (hClose)
               (\hdl ->
		  do x <- hGetChar hdl
		     y <- hGetChar hdl
                     print (x,y)
	       )


輸出:
('H','E')
         

注:本文由純淨天空篩選整理自 haskell bracket。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。