OCaml には、 Gc.finalise という関数があります。これはガーベージコレクター(GC)に関連のある関数で、 ある値が必要なくなってガーベージコレクトされる直前に、その値に対して何かするためのコールバックを登録する ために使われます。 Gc.finalise f vとすると、v が GC される直前に f v を評価します。 まず、謎 なぜ、finalise であって finali*z*e ではないか、これは OCaml 七ふしぎの一つです*1。オブジェクト初期化コードのための予約語は initiali*z*er なのにね、、、大昔理由を聞いたような気がしますが、、、確か、 finalize という名前の関数が既にコンパイラか何かで使われていたから、とかいう理由だったような、、、 次に、効用 リソース開放のタイミングを自動的に行えます。v がリソースのハンドルとすると、ハンドル