情報科学演習III小林研究室課題3

ML Kit with Regions を使って遊ぶ

ML Kit with Regions とは?

狭い意味での「型」は、各変数にどのような値が束縛されるか・各式の評価結 果はどのような値になるかを表わすわけですが、型の概念を拡張すると、プロ グラム中でアクセスされるメモリ領域に関する情報も扱うことができます。例 えば通常、関数の型は「整数値を引数としてとり、整数のリストを返り値とし て返す」といったことを表わしますが、これを、「○○という場所に格納され た整数を引数とし、△△という場所のデータにアクセスし、××という場所に 格納されたリストを返す」という情報ま でも含めて「型」と考えるわけです。これによって、プログラムの各場所でど のメモリ領域がアクセスされるかを(MLの型推論と同じ原理で)推論すること ができます。 このようなアイデアに基づいて作られたMLの処理系が "ML Kit with Regions"で、通 常のMLのプログラムに、Cでいうところのmalloc や free を自動的に挿入する ことにより、ガベージコレクションなしでもプログラムを走らせることができ ます。しかもC言語の場合と異なり、malloc やfree に相当する操作を挿入す るのは型推論器ですから、間違ったメモリを開放してしまうことはありません。 詳しくは、 ML Kit Project のホームページを参照して下さい。

課題の内容

本課題では、実際に"ML Kit with Regions" に自分で書いたMLのプログラムを与 えてみて、どのようにmalloc やfree が挿入されるか、ガベージコレクション なしでどの程度うまくプログラムが動作するかを体験してもらいます。理論的 背景に興味がある人には、それに関連する論文も読んでもらいます。



課題一覧へ
koba@is.s.u-tokyo.ac.jp