雑に読んだメモ。だいたい構造わかったので満足。
- Readerモナドを自前で定義している
- 開放用のアクションを登録するマップを保持
RefCount
はfork
用のリファレンスカウント、NextKey
はリリースに必要なキーの採番用- 前者は
minBound
から加算、 後者はmaxBound
から減算(別々にしている理由はわからず)
runResourceT
でリファレンスカウント見て 参照がなくなってそうならIOアクション全部呼び出して開放する- 効率のために、 内部構造を直接触れるインタフェース を提供している。例えば自前の
State
モナドに積んだほうが、モナド変換子積むより速いかも