2011-01-25 105 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