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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。