Extensible Effect界隈では、FTCQueueという「関数を効率的に保存する構造」が使われることがあるのだけど、Haskellでは何もしなければデフォルト遅延評価なのだけど、僕の書いたPNGデコーダーで画像を展開後もメモリが開放されないという問題が生じていて、でそのへんがあやしいなと思って、!(bang)を3ヶ所につけて、積極評価を強制したところ、ちゃんとメモリが開放された。

サンクのままで、GCされないみたいな話だったのかな。

Reply to this note

Please Login to reply.

Discussion

Effect界隈では、FTCQueueという「関数を効率的に保存する構造」が使われることがあるのだけど、Haskellでは何もしなければデフォルト遅延評価なのだけど、僕の書いたPNGデコーダーで画像を展開後もメモリが開放されないという問題が生じていて、でそのへんがあやしいなと思って、!(bang)を3ヶ所につけて、積極評価を強制したところ、ちゃんとメモリが開放された。

サンクのままで、GCされないみたいな話だったのかな。 Extensible

メモリがちゃんと解放されたのが、修正したあと1回だけだったから、ちがうかもしれない。