Core Concepts
効果ハンドラを使った効果的な計算を構造化し、推論するための効率的な方法として、明示的な部分型付けコアーションを追跡することが提案されている。しかし、多相性の存在により、これらのコアーションは追加の引数としてコンパイルされ、大きなオーバーヘッドを引き起こす。本論文では、不要な制約を減らすための簡略化フェーズを特定し、それらが意味論を保存することを証明する。さらに、Eff言語で簡略化アルゴリズムを実装し、ベンチマークでの性能を評価する。
Abstract
本論文は、効果ハンドラを使った効果的な計算を効率的にコンパイルする方法について述べている。
背景
近年、効果ハンドラをサポートする言語が増えており、その性能が重要になってきている。
効率的なコンパイルには、2つのアプローチがある: 効率的なランタイム、または最適化コンパイラ。
最適化コンパイラのアプローチでは、効果情報を明示的な部分型付けコアーションで追跡する。
しかし、多相関数ではこれらのコアーションが追加の引数としてコンパイルされ、大きなオーバーヘッドを引き起こす。
提案
冗長なコアーション引数を確実に減らすアルゴリズムを提案する。
簡略化フェーズを特定し、それらが意味論を保存することを証明する。
Eff言語で簡略化アルゴリズムを実装し、ベンチマークで評価する。
言語仕様
CoreEffという多相的な効果付きの計算言語を定義する。
値型、計算型、コアーションを定義し、それらの型付けルールを示す。
型パラメータ、効果パラメータ、コアーション引数のコンテキストを定義する。
置換
型パラメータ、効果パラメータ、コアーション引数の置換を定義し、その性質を示す。
型パラメータを正準形に簡略化する手順を示す。
簡略化
型コアーションと効果コアーションの簡略化フェーズを提案する。
簡略化が意味論を保存することを証明する。
実装と評価
Eff言語に簡略化アルゴリズムを実装する。
ベンチマークで性能を評価し、手動の単相化コードと同等の効率が得られることを示す。