偏求值是计算机科学的一个分支,研究通过特化进行程序转换。任何函数都可以通过将一个或多个输入固定为特定值来进行特化。特化产生的程序的输入数量是初始输入数量减去值是常数的输入数量。这些特化后的程序也称为残余程序。
克莱尼s-m-n定理确立了函数特化的理论可能性。偏求值将这个想法应用于计算机程序。请注意,克莱尼定理没有涉及特化函数的效率,而偏求值的目标是程序优化。
偏求值通过检测专门依赖于值固定的特化变量的代码片段,并通过符号预计算这些片段来完成。残余程序运行速度更快,因为它缺少上述片段。
作为一个例子,考虑以下程序
(1)
|
此程序计算正整数的 。如果 ,则偏求值将此程序简化为以下形式
(2)
|
(Jones等,1993)。
实现偏求值的符号计算适用于表达式和程序控制结构。这些符号计算涉及函数调用和循环展开。