先日見かけた Closeモナド についての言及になります この記事の概要 長くなりそうなので最初にまとめです Close モナドにはいくつかの問題があります それらの問題は既存の継続モナドによって解決できます リソース管理のために新たなモナドを考案する必要はありません Close モナドが抱える問題 動作の問題 run を二回以上呼べません リソースがインスタンス変数として保持されているためです 言い換えると map や flatMap 自体に副作用があります コードの問題 Close[R, A] の A にアクセスするための手段が map しかありません 副作用が目的の処理であっても map が必要になってしまいます クラス内にリソースを閉じるための try-finally が二回書かれています DRY に書きたいですね 継続モナドの導入 まずは最も簡潔な(と思われる)実装を先に載せてお
