Lambda演算的基于模式的优化

时间:2019-03-10 19:48:26

标签: optimization functional-programming computer-science lambda-calculus

我正在用C#编写lambda演算的解释器。到目前为止,我已经采用了以下几种解释方式。

  1. 将术语编译为MSIL,这样仍然保留了惰性评估。
  2. 对术语树的评估(术语重写)。

此刻,在大多数我能测试的情况下,MSIL编译策略的速度要快一个数量级。但是,我正在通过确定通常在LC术语构建中使用的模式来优化术语重写器。到目前为止,我特别提出了一种方法,该方法提供了相对较小的加速:识别指数级应用程序。例如。 f (f (f (f x)))简化为f^4 x。然后,使用用于申请者指数相等的规则,即f^m (f^n x) = f^(m + n) x。该规则特别适用于教会数字的取幂。

这种优化让我想知道:LC中是否还有其他基于模式的优化方法?

0 个答案:

没有答案