2011-01-25 8 views
5

ラムダ計算演算子の優先順位を理解する上で問題があります。ラムダ微積分演算子の優先順位

たとえば、次のコード:

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 

ラムダアプリケーションはアソシエティブのままですが、ラムダ値は がアプリケーションより優先度が高いことがわかりましたか?

答えて

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

ありがとうございました。すべてのter! – Tharasim

関連する問題