部分評価

プログラムの入力の一部(static な入力)を先に固定し、その分の計算を済ませた特化版プログラム(residual program)を生成する技法。p(static, dynamic) を p_static(dynamic) に変換する。抽象化のオーバーヘッドを「抽象度を保ったまま」消すための基盤。

Futamura 射影(二村射影)

部分評価器 mix をインタプリタ int に適用すると、コンパイルの階層が現れる。

  1. mix(int, prog) → prog をコンパイルした実行コード(インタプリタの解釈オーバーヘッドを除去)
  2. mix(mix, int) → コンパイラ(任意の prog をコードに変換する関数)
  3. mix(mix, mix) → コンパイラ生成器(インタプリタからコンパイラを作る器械)

仕組み

関連技術との位置づけ

なぜ重要か

汎用性と性能はふつうトレードオフだが、部分評価は汎用に書いたコードを使用時に特化することで両取りを狙う。インタプリタ=コンパイラの関係(抽象機械)を理論的に橋渡しする点でも中心的。

関連

Graph