2011-01-25 33 views
5

Mam problemy ze zrozumieniem pierwszeństwa operatorów lambda.Operatory różniczkowe Lambda pierwszeństwo

Na przykład następujący kod:

lambda x.x z lambda y.x y 

będzie:

lambda x. (x (z lambda y. x y)) 

lub

lambda x. ((x z) (lambda y. x y)) 

?

jeszcze bardziej skomplikowane przykłady:

(lambda x.x z) lambda y.w lambda w.w x y z 

gdzie w powyższym przykładzie nawiasy iść?

Wiem, że aplikacja lambda pozostała asocjacyjna, ale czy wartości lambda mają wyższy priorytet niż aplikacje?

Odpowiedz

13

Aplikacja ma wyższy priorytet niż abstrakcja. Wraz z tym, że wniosek jest lewy-asocjacyjne i abstrakcji jest prawym asocjacyjne, prowadzi to do następujących:

lambda x.x z lambda y.x y 

jest

lambda x. ((x z) (lambda y. (x y))) 

i

(lambda x.x z) lambda y.w lambda w.w x y z 

jest

(lambda x. (x z)) (lambda y. (w (lambda w. (((w x) y) z)))) 
+0

Dziękuję :) To było proste af wszystkie! – Tharasim