Lambda微积分运算符优先

时间:2011-01-25 13:58:27

标签: lambda lambda-calculus operator-precedence

我在理解lambda演算运算符优先级时遇到了问题。

例如以下代码:

lambda x.x z lambda y.x y

将是:

lambda x. (x (z lambda y. x y))

lambda x. ((x z) (lambda y. x y))

更复杂的例子:

(lambda x.x z) lambda y.w lambda w.w x y z

在上面的例子中,括号是什么?

我知道lambda应用程序是左关联的,但确实是lambda值 优先于申请?

1 个答案:

答案 0 :(得分:19)

应用程序具有比抽象更高的优先级。再加上应用程序是左关联的,抽象是右关联的,这导致了以下结果:

lambda x.x z lambda y.x y

lambda x. ( (x z) (lambda y. (x y)) )

(lambda x.x z) lambda y.w lambda w.w x y z

(lambda x. (x z)) (lambda y. (w (lambda w. (((w x) y) z))))