Partial Evaluation

Partial Evaluation is a program optimization by specialization technique. A computer program is seen as a mapping prog: {Istatic, Idynamic} \rightarrow O of input data into output data. Istatic is the part of the input data known at compile time. The partial evaluator transforms {prog, Istatic} into prog* i.e. precomputes all static input at compile time. prog* is called the residual program. prog: {Istatic, Idynamic} \rightarrow O becomes prog*: Idynamic \rightarrow O which in general runs more efficiently. A particularly interesting example of this is when prog is an interpreter for a programming language. If Istatic is source code designed to run inside said interpreter, then partial evaluation of the interpreter with respect to this data/program produces prog*, a version of the interpreter that only runs that source code, is written in the implementation language of the interpreter, does not require the source code to be resupplied, and runs faster than the original combination of the interpreter and the source. In this case prog* is effectively a compiled version of Istatic. This technique is known as the first Futamura projection, of which there are three:
  1. Compiling by specializing an interpreter
  2. Compiler generation by self-application
  3. Compiler generator generation by double self-application
See also C++ Template metaprogramming
* partial-eval.org - a large "Online Bibliography of Partial Evaluation Research".

 

<< PreviousWord BrowserNext >>
irene van dyk
catalan's conjecture
proof
beatnik
centrohelid
pharaoh hound
langmuir probe
academy award for documentary feature
academy award for unique and artistic production
location based service
academy award for engineering effects
plasma source
belmont stakes
kentucky oaks
secretariat (racehorse)
lovebird
tarsier
schooner
global crossing
salerno
j. b. s. haldane
modena
standard enthalpy change of combustion
tier 1
list of pharmaceutical companies
tier 1 carrier
eager evaluation
pawnee
evaluation
puberty
scada
john walker (runner)
expression
the sting
v5 interface
230 bc
alice (alice's adventures in wonderland)
catharina of wrttemberg
giustina pecori surez
independence
johnson city
jerome napoleon bonaparte ii
charles joseph bonaparte
leesburg