副作用命令を含んだ関数型言語の部分評価手法の確立を目指して研究を行ない、以下のような成果を得た。 1.高階関数を扱う言語においては、副作用命令を部分評価時に実行するのは非常に難しく、できたとしても効果が小さいことがわかった。そのため、副作用命令を実行するのではなく、その及ぼす影響の範囲を副作用解析によって特定し、その部分については部分評価せずにそのままコードとして残す、という方法をとった。この方針で関数型言語Schemeの部分評価器を作成し、実際に正しく動作することを確認した。さらに、その定式化、および正当性の証明も行なった。 2.予定していたonline手法と履歴付記号値の組合せは、この変更後の枠組でも問題ないことがわかった。また、従来、不明確だったコード生成部についても計画通り定式化を行なうことができ、online部分評価器の構造がより明確になった。 3.我々の方法は、従来用いられてきたoffline手法のlet文との関連を指摘されていたが、本研究では、我々の手法が従来のものよりも強力であることが示された。具体的には、従来、うまく扱えてこなかったポインタの同値性が、我々の手法では正しく扱われてことが示された。ポインタの同値性が保存されないのでは副作用命令の意味がなくなってしまうため、このことは重要である。 4.自己反映言語への応用の第一歩として、副作用命令を使って書かれたインタプリンタの部分評価を行ない、十分な特化が行なわれていることを確認した。このことは、ここで作成した部分評価器が自己反映言語のコンパイラとして使用できること示している。 今後の課題としては、副作用解析の精度の向上、部分評価器の効率の向上、自己反映言語への部分評価器の組み込みとさらなる実験、等があげられる。
|