研究課題
本年度は、自己反映言語の効率的な実装に必要と考えられる3つの基盤技術のうちふたつ目の高速なプログラム変換(コンパイル)技法についての検討、および3つ目の部分継続に関する理論として型主導部分評価について検討した。これら2点について述べる。前者については、前年度までの研究で、目指している自己反映言語を実装するためには、必ずしも直接形式で実装する必要はなく継続渡し形式でも可能なことがわかってきた。これは、従来の部分評価器を使って自己反映言語のコンパイルができるかも知れないことを示している。そこで、従来の部分評価器(Thiemann らが開発する PGG システム)を使ってコンパイルを試みた。しかし、従来の部分評価器はソースプログラムの変換を行うもので、実行中のプログラムを特化してくれるわけではない。自己反映言語のコンパイルでは実行中のプログラムを特化する必要があるため、そのままでは使えそうにないことがわかった。この観察により、実行中のプログラムを特化できる MetaOCaml などのステージ化言語ならコンパイルに使えるかも知れないという見通しを得た。後者については、部分継続命令を含んだプログラムの高速な部分評価手法として、型主導の部分評価を取り上げ、その正当性を確立した。これまで、この手法は提案はされていたが、その正当性は難解で、かつ部分継続命令を含まないものについてしか証明されていなかった。ここでは従来の難解な証明をひもとくとともに、従来の手法を部分継続命令にまで拡張すること(具体的には CPS 変換を上手に行うこと)で正当性を確立した。これにより、部分継続命令を含んだプログラムについても高速な部分評価を行える土台が整ってきたことになる。この成果については、国内のワークショップで発表した。
2: おおむね順調に進展している
本研究が目指す3つの目標のうち、ひとつ目の「直接実行されるコードと解釈実行されるコードの共存法の確立」はすでに終了している。ふたつ目の「強力かつ高速なプログラム変換技術の開発と発展」については本年度、マルチステージ言語を使うという新たな方向性が見いだせた。また、3つ目の「部分継続に関する理論の発展」については部分継続命令を含む型主導部分評価の正当性を確立できるなどの成果が出ている。全体として、おおむね順調に進展していると考えられる。
今年度までの研究で、継続渡し形式を使って自己反映言語を実装した場合には、当初の予想には反して部分継続の部分評価を使わなくても自己反映言語を実現できるかも知れないこと、一方で部分評価と通常の実行を区別せずに行う必要がありそうなことがわかってきた。来年度は、そのような観測をふまえ、従来のマルチステージ言語である MetaOCaml による自己反映言語の実装を試みる。MetaOCaml は、手動でステージ化を行わなくてはならないが、上記の要請を満たしており自己反映言語を実装をできる可能性がある。これについて重点的に検討する。
すべて 2013 2012
すべて 雑誌論文 (2件) (うち査読あり 2件) 学会発表 (1件)
プログラミングおよびプログラミング言語ワークショップ論文集
巻: 15 ページ: 15ページ(電子媒体)
Higher-Order and Symbolic Computation
巻: Vol. 24, Issue 4 ページ: 311-340
10.1007/s10990-012-9087-2