9

我无法理解 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 值是否比应用程序具有更高的优先级?

4

1 回答 1

24

应用程序的优先级高于抽象。再加上应用程序是左关联的,抽象是右关联的,这导致以下情况:

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))))
于 2011-01-25T14:43:41.813 回答