関数型プログラミング言語Haskell Part29 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0825デフォルトの名無しさん
2015/12/29(火) 11:39:12.45ID:X0OP3kiAその本でどのように説明されているのか私は知りませんので、
的外れなレスでしたらごめんなさい。
bracket と bracketOnError はそもそも役割が異なり、
その処理効率によって比較するものではありません。
bracket は第3引数のIOアクションの実行時に例外が発生しようがしまいが、
第2引数のIOアクションは実行されます。
一方、bracketOnError は第3引数のIOアクション実行時に例外が発生した場合のみ、
第2引数のIOアクションが実行されます。
(どちらの説明もライブラリドキュメントに書かれています)
なので、確保したリソースの第3引数のIOアクション後の解放を保証したいのならば、
bracketOnError は使えません。
例外が発生しなければ第2引数のIOアクションは実行されないので。
ちなみに、この2つの関数、中身はほとんど同じです。
http://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Exception.html
ここの各関数のシグネチャの右端にソースへのリンク(Sourse)があるので、見てみてください。
どうでしょう、効率に差があるように見えるでしょうか。
■ このスレッドは過去ログ倉庫に格納されています