研究概要 |
値呼び出しの関数プログラム言語で関数的なデータ構造(明示的な破壊的操作の許されていないデータ構造)の構築をより柔軟に行なうことを可能にするために,穴(初期化されていないフィールド)をもつデータ構造を関数プログラム言語で扱うことを可能にした.この穴をもつデータ構造を使うことで、より効率的なプログラムを書くことが可能になる. 1.穴をもつデータ構造に対して行われる操作は,ラムダ抽象に対して行われる操作と類似点が多く,関数プログラム言語に対して,穴をもつデータ構造を新たなラムダ抽象(hole abstraction)として,導入することが自然であることが分かった.しかし,関数プログラム言語の様々な良い性質を保存するには,その使い方に様々な制限が必要になる.そこで,そのような制限を課す型システムを構築し,その健全性を示した. 2.ラムダ計算からCombinatory Logicへの翻訳を応用してhole abstractionをコンパイルする方法を構築し,その正しさの証明を行った.この翻訳を行えば,その後は,値呼び出し関数プログラム言語の通常のコンパイル方法を用いて,コンパイラを実装することができる. 3.Standard MLの実験的コンパイラにhole abstractionを実装し,ベンチマーク・プログラムを使った実験を行った.その結果,リストのappendやmerge sortなどでは,30%前後の大きな実行時間の改善が確認された.
|