Miễn phí và ràng buộc trong tính toán Lambda


7

Đây là một cái gì đó từ "Cú pháp và ngữ nghĩa của ngôn ngữ lập trình" của Slonneger:

Một biến có thể xảy ra cả ràng buộc và tự do trong cùng một biểu thức lambda: ví dụ: trong x.yλy.yx sự xuất hiện đầu tiên của y là miễn phí và hai biến còn lại bị ràng buộc.

Tôi giả sử biến miễn phí là y ngay sau x. và các ràng buộc của y là λy.y mà tôi có thể nắm bắt bằng trực giác. Vậy ((x.yλy.yx) a) b) sẽ giảm xuống (yλy.ya) b) sau đó thành bba? Ai đó có thể giải thích làm thế nào điều này xảy ra? Cuối cùng, biểu thức b hai lần. Ai đó có lẽ có thể cung cấp nhiều ví dụ về các biến ràng buộc và miễn phí?


Tôi nghĩ Slonneger đã không sử dụng một ví dụ hay ở đó, vì có thể dễ bị đọc nhầm thành , thường được viết tắt là . Tôi sẽ đưa ra một ví dụ khác: trong , lần xuất hiện cuối cùng của là miễn phí và các lần khác bị ràng buộc. λx.yλxyλx.λy(λx.λy.xyx)xx
Jay

Câu trả lời:


11

Tôi đã thêm dấu ngoặc để định hướng màu đỏ là miễn phí và màu xanh là bị ràng buộc bởi sự trừu tượng màu xanh lá cây. Tôi không nghĩ thật hợp lý khi nói rằng màu xanh lá cây bị ràng buộc, nhưng nó cùng với lambda là một chất kết dính.

λx.(y(λy.(yx)))
yy

Chúng tôi có thể giảm thời hạn beta một lần

λx.(y(λy.(yx)))abβ(y(λy.(ya)))b

nhưng không còn nữa, vì không còn lại các dấu đỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.