自己反映計算(Reflective Computation)とは、計算中にその計算システム自体の状態を参照、操作できるような計算のことである。本研究では、そのセマンティクスの明確化、及び効率的実現を目指して、以下の3点を行なった。 1.既に作成していたインタプリタをさらに詳細に検討・整理することで、その構造をより明らかにした。具体的には、コードが直接実行されるものと解釈実行されるものとに分類され、それぞれが効率的なインタプリタと柔軟性の高いインタプリタに対応していることを示した。その上で、効率を損なわない範囲で解釈実行されるコードを導入することが、柔軟性の高い効率的な自己反映言語には重要であることを示した。 2.自己反映言語を柔軟性を保ちつつ効率的に実現するためには、解釈実行される部分に部分評価器を使うことが必要であることを示した。さらに、実際にどの部分を部分評価すれば良いのかを抽出し、部分評価器が種々の副作用命令、特に入出力型とデータ構造への破壊的代入型の副作用を扱える必要があることを示した。 3.実際に部分評価器を使って自己反映言語をコンパイルするため、副作用を含む関数型言語に対する部分評価器の作成法を検討した。このうち、入出力型の副作用に関しては、履歴付記号値を使うことで扱えることを示し、実装した。データ構造への破壊的代入については、破壊リストを導入することで安全に扱えることを示し、実装した。これをより強力なものとし、実際に自己反映言語のコンパイルに使っていくのは、今後の研究課題である。また、副作用命令のうち変数代入については、エイリアスに関して困難な問題が存在することを発見した。変数代入は自己反映言語側では必ずしも必要ないが、この問題の解決も今後の課題である。
|