2011-01-25 63 views
5

我在理解lambda微积分运算符优先级时遇到问题。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值 比应用程序具有更高的优先级?

回答

13

应用程序具有比抽象更高的优先级。一个事实,即应用程序是左关联的,抽象是右结合在一起,这导致了以下内容:

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)))) 
+0

谢谢:)这是简单的af所有! – Tharasim