Optimization 基于lambda演算的模式优化

Optimization 基于lambda演算的模式优化,optimization,functional-programming,computer-science,lambda-calculus,Optimization,Functional Programming,Computer Science,Lambda Calculus,我正在为C#中的lambda演算编写一个解释器。到目前为止,我已经通过以下途径进行了解释 将术语编译为MSIL,以便仍保留惰性计算 对术语树进行评估(术语重写) 目前,MSIL编译策略比我测试过的大多数情况快了一个数量级以上。然而,我正在通过识别LC术语构造中经常使用的模式来优化术语重写器。到目前为止,我特别提出了一种方法,它提供了相对较小的加速:识别指数化应用程序。例如,f(f(f(f x))被简化为f^4x。然后,使用相等申请人指数的应用规则,即f^m(f^nx)=f^(m+n)x。这条规则

我正在为C#中的lambda演算编写一个解释器。到目前为止,我已经通过以下途径进行了解释

  • 将术语编译为MSIL,以便仍保留惰性计算
  • 对术语树进行评估(术语重写)
  • 目前,MSIL编译策略比我测试过的大多数情况快了一个数量级以上。然而,我正在通过识别LC术语构造中经常使用的模式来优化术语重写器。到目前为止,我特别提出了一种方法,它提供了相对较小的加速:识别指数化应用程序。例如,
    f(f(f(f x))
    被简化为
    f^4x
    。然后,使用相等申请人指数的应用规则,即
    f^m(f^nx)=f^(m+n)x
    。这条规则特别适用于教堂数字的幂运算


    这个优化让我想知道:在LC中还有其他基于模式的优化方法吗?

    也许会有所帮助?也许你也可以申请,但iirc需要具体的规则。这个问题很好,但我担心它对StackOverflow来说有点太宽泛了。