PiSigma: tại sao 'mở ra' liên kết một biến?


8

Tôi đang cố gắng hiểu bài báo ΠΣ: Các loại phụ thuộc không có Sugar bằng cách triển khai trình thông dịch và trình kiểm tra loại cho ngôn ngữ. Khi làm như vậy, tôi đã thấy rằng unfold t as x -> ucú pháp cho các định nghĩa đệ quy (cú pháp được định nghĩa trong Mục 2.1) liên kết một biến, nhưng tôi không hiểu tại sao điều đó lại cần thiết. Không có ví dụ nào trong bài báo thực sự sử dụng ràng buộc biến - tất cả chúng đều sử dụng một dạng tốc ký unfold t(nghĩa là unfold t as x -> x).

Tôi làm thấy rằng các loại kiểm tra quy tắc cho nó (từ phần 5) sử dụng biến ràng buộc, nhưng tôi không hiểu được ý nghĩa của việc này. Theo như tôi có thể nói unfold t as x -> ulà hoàn toàn tương đương với let x = unfold t in u.

Ai đó có thể cung cấp một ví dụ về khi ràng buộc biến là hữu ích hoặc cần thiết? Có một số thuật ngữ kiểm tra loại với hình thức dài unfoldnhưng không phải với hình thức ngắn và let?


Tôi muốn trích dẫn quy tắc kiểm tra loại, nhưng kiến ​​thức của tôi LaTeX quá hạn chế. Một số biên tập viên sẽ làm điều đó cho tôi? Cảm ơn!
Steve Trout

Câu trả lời:


1

Tôi không nghĩ có bất kỳ lý do ma thuật / cần thiết nào. IMO, nó được viết theo cách đó để làm cho nó rõ ràng hơn rõ ràng đó unfoldlà một quy tắc loại bỏ phân tích / kiểm tra; giống như tại sao splitnó được viết theo cách nó chứ không phải được viết như các hình chiếu thứ nhất và thứ hai, và tại sao casenó được viết theo cách nó chứ không phải được viết như uneithertrong Haskell.

Re bit "phân tích", lưu ý cách các quy tắc loại trừ khác là tổng hợp / suy ra (beta) hoặc hai chiều (bang)


Ah, tôi thấy sự khác biệt ở đó. Đó là một lý do có thể tại sao !xkhông được viết force x as y -> y. Cho dù có hay không một lý do sâu xa hơn, câu trả lời này đáp ứng sự tò mò của tôi. Cảm ơn!
Steve Trout
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.