Tại sao lambda-trừu tượng là thuật ngữ duy nhất là giá trị trong phép tính lambda chưa được đánh dấu?


7

Tôi bối rối về tuyên bố sau: "Các giá trị duy nhất trong phép tính lambda chưa được đánh dấu là tóm tắt lambda".

Tại sao các điều khoản khác không phải là giá trị? Nó có ý nghĩa gì đối với một trừu tượng lambda là một giá trị? Điều đầu tiên tôi nghĩ đến là có lẽ trừu tượng lambda là những dạng bình thường duy nhất có thể, nhưng tất nhiên điều này không đúng, ví dụ .(λx.x)yy

Ai đó có thể khai sáng cho tôi?


Bạn đã thấy điều đó ở đâu? Định nghĩa của giá trị có thể thay đổi.
jmad

2
(λx.x) y không phải là một sự trừu tượng hóa lambda, nó là một ứng dụng, cụ thể là ứng dụng của (λx.x) đến y.
Dave Clarke

1
@DaveClarke: Tôi nghĩ rằng Jeroen có nghĩa là ylà một hình thức bình thường (để chứng minh rằng một giá trị là một sự trừu tượng hóa) và không phải là một sự trừu tượng hóa (để chứng minh rằng một sự trừu tượng là một giá trị). (λx.x)y
jmad

2
Các biến luôn là các giá trị, trong mọi phép tính.
Fabio F.

2
@DaveClarke: Tôi vừa kiểm tra sách của Pierce. Sự nhầm lẫn phát sinh do ngữ nghĩa hoạt động của lambda-tính toán lần đầu tiên được chạm vào không chính thức. Người ta nói trong một chú thích rằng các giá trị duy nhất của phép tính là trừu tượng lambda. Sau này, khi ngữ nghĩa được định nghĩa chính thức, nó trở nên rõ ràng rằng chỉ các thuật ngữ đóng đang được xem xét.
codd

Câu trả lời:


10

Có một số điều đang diễn ra ở đây:

  • Ngôn ngữ bạn đang nói không có loại dữ liệu bổ sung, nếu không sẽ có các loại giá trị khác.
  • Chiến lược rút gọn của ngôn ngữ không làm giảm sự trừu tượng của lambda. Cả cuộc gọi theo giá trị và cuộc gọi theo tên đều phù hợp với điều này. Nếu không, không phải sự trừu tượng lambda sẽ là một bình thường.
  • Người ta thường coi các biểu thức đóng là các chương trình, do đó không có biến miễn phí, do đó ví dụ bạn trình bày không được xem xét.

Các điều khoản khác không phải là giá trị vì chúng có thể được giảm hoặc chúng không xuất hiện trong các chương trình đóng.

Rằng một trừu tượng lambda là một giá trị có nghĩa là nó không thể giảm thêm nữa (tùy thuộc vào chiến lược giảm).

Đối với các thuật ngữ mở, các biến cũng là giá trị.


1
Điều này thật ý nghĩa. Điều chính tôi nhận ra là chỉ nên xem xét các điều khoản đóng. Tôi sẽ kiểm tra với nguồn ban đầu để xem đó có phải là một phần của định nghĩa chính thức về ngữ nghĩa hoạt động không.
codd
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.