[Paper, ICFP09] ICFP09 papers: review 1

by syoyo

ICFP 2009: Accepted Submissions
http://web.cecs.pdx.edu/~apt/icfp09_accepted_papers/accepted.html

ICFP は、関数型プログラミングの最高峰? かどうかはわかりませんが、
個人的にはグラフィックスにおける SIGGRAPH に相当するような学会だと思っています.

んで、ICFP 2009 の採択論文が発表されたようなので、自身のコンパイラ技術向上のために、
ICFP09 papers を個人的にレビューしてみたいと思います.
全文はまだ手に入らないものもあるようなので、abstract をベースに.
(分からないものは、abst を少し訳すくらい)
注力するのは、型付け, 型推論, 最適化あたりのネタになります.

レビュー順は、web の上から順にです.

A Concurrent ML Library in Concurrent Haskell

Concurrent ML という平行性拡張をほどこした ML(という言語)では、ML に於ける関数を渡すという感じで、同期抽象(synchronization abstraction)は値として渡すように定義することができる.
これは高階平行プログラミング(higher-order concurrent programming)と呼ばれ、平行プログラミングのパワフルでモジュラーなスタイルである.
しかし、このスタイルは一階(first-order, 要は int, float のようなプリミティブな要素)のメッセージパッシングしかサポートしない言語で可能かどうかは不明瞭であった. つまり Concurrent ML における同期抽象の実装は、非常に低レベルで言語依存であった.

んで、Concurrent Haskell のように一階メッセージパッシングしかサポートしない言語でも実装できるよ、しかも効率的に実装できたぜ、ということらしい.

A Theory of Typed Coercions and its Applications

いくつかのプログラムのリライト(rewrite)ルールは、型指向の coercion(強制変換, float 値を int に変換とか) の挿入として書き直すことができる.

この手法は、型理論における強制的なサブタイピングやオーバーローディングなどの理論的な応用から、より実務的な応用として gradual typing(じょじょに型付け?)を用いて静的に型付けされたコードと動的に型付けされるコードを統合したり、コードをインライン展開してアクセスコントロールや provenance tracing(出自の追跡?)などのセキュリティポリシーを適用するなど、多岐に渡って応用がある.

表現性とあいまいさというトレードオフ, つまり強制変換の生成の戦略をパワフルにしていくと、与えられたプログラムへの語義的に異なったリライト方法の存在の可能性が高まってしまう、について探っていく.

んで、あいまいさを抑えつつもパワフルな強制変換生成を可能にする戦略について考えてみたらしい.

動的型付けと静的型付けを統合できるというのは興味深いですね.
動的スクリプト言語の型付けなどに使えそうか?

—-

とりあえず今日はここまで. 残り 30 papers ほどです.

Advertisements