9

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

たとえば、次のコード:

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

上記の例では、括弧はどこにあるのでしょうか?

ラムダ アプリケーションが連想のままであることは知っていますが、ラムダ値はアプリケーションよりも優先されますか?

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 に答える