2011-01-25 36 views
5

Tôi gặp vấn đề khi hiểu toán tử lambda được ưu tiên.Toán tử lambda Calculus ưu tiên

Ví dụ đoạn mã sau:

lambda x.x z lambda y.x y 

sẽ là:

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

hoặc

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

?

ví dụ Thậm chí phức tạp hơn:

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

nơi trong ví dụ trên ngoặc đi đâu?

Tôi biết rằng ứng dụng lambda là trái kết hợp nhưng giá trị lambda có ưu tiên cao hơn các ứng dụng không?

Trả lời

13

Ứng dụng có ưu tiên cao hơn trừu tượng. Cùng với thực tế là ứng dụng được trái kết hợp và trừu tượng là phải kết hợp, điều này dẫn đến những điều sau đâ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 

được

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

Cảm ơn bạn :) Thật đơn giản af tất cả! – Tharasim

Các vấn đề liên quan