Eta mở rộng trong mô hình lambda tính toán


12

Klop, van Oostrom và de Vrijer có một bài viết về phép tính lambda với các mẫu.

http://www.scTHERirect.com/science/article/pii/S0304397508000571

Theo một nghĩa nào đó, một mẫu là một cây các biến - mặc dù tôi chỉ nghĩ về nó như một bộ biến số lồng nhau, ví dụ, ((x, y), z), (t, s)).

Trong bài báo họ đã chỉ ra rằng nếu các mẫu là tuyến tính, theo nghĩa là không có biến nào trong một mẫu được lặp lại, thì quy tắc

(\p . m) n = m [n/p]

Trong đó p là một mẫu biến và n là một bộ các thuật ngữ có hình dạng chính xác giống như p, là hợp lưu.

Tôi tò mò liệu có những phát triển tương tự trong tài liệu cho phép tính lambda với các mẫu và quy tắc eta bổ sung (mở rộng, giảm hoặc chỉ là đẳng thức).

Cụ thể, bởi eta, ý tôi là

m = \lambda p . m p

Trực tiếp hơn, tôi tò mò những tính chất như một phép tính lambda sẽ có. Ví dụ, nó có hợp lưu không?

Nó buộc loại phân loại phải đóng cửa vì nó buộc tài sản đó

m p = n p implies m = n 

Bằng cách sử dụng quy tắc \ xi ở giữa. Nhưng có lẽ một cái gì đó có thể đi sai?


Bạn có thể viết đặt những gì quy tắc eta bạn có nghĩa là? Trừ khi nó rất lạ, bạn sẽ có thể mã hóa nó bằng cách sử dụng tổng và đưa ra một đối số mô phỏng.
Tối đa mới

2
@MaxNew: có vẻ như anh ấy hỏi về phép tính chưa được kiểm tra. Tất cả mọi thứ về các mẫu đều hoạt động hoàn hảo với các loại (tôi rất khiêm tốn đề nghị Tập trung vào Kết hợp mẫu của riêng tôi ), nhưng phép tính lambda chưa được đánh dấu là đủ khác với LC đã nhập (đặc biệt là ett eta) mà tôi không dám trả lời mà không làm bằng chứng .
Neel Krishnaswami

@MaxNew: Điều gì sẽ mã hóa bằng khoản tiền đòi hỏi?
Jonathan Gallagher

@NeelKrishnaswami: Tôi thực sự quan tâm đến cả hai. Tôi nghĩ rằng tôi lo lắng về việc có các biến của một loại sản phẩm cùng với quy tắc eta. Tôi nghĩ rằng điều này đã được thực hiện, ví dụ, dicosmo.org/Articles/JFP96.pdf . Nhưng nếu tôi nhầm, xin vui lòng sửa cho tôi. Sau đó, bạn có các đẳng thức như \ lambda x .mx = m = \ lambda (p, q). m (p, q), ví dụ. Cảm ơn các liên kết đến giấy của bạn!
Jonathan Gallagher

Câu trả lời:


7

Đây không phải là một câu trả lời hoàn chỉnh; đó là một bình luận đã quá lớn

Nếu bạn mở rộng tính toán lambda đã gõ với các sản phẩm có bộ khử dự phòng (nghĩa là bộ khử sản phẩm fst(e)snd(e)), về cơ bản không có vấn đề gì. Lý do phải mất quá nhiều thời gian để tìm ra là vì nó trở nên tự nhiên hơn khi thực hiện mở rộng eta hơn là giảm eta . Xem The Virtues of Eta Expansion của Barry Jay .

Nếu bạn muốn sản phẩm có bộ khử kiểu mẫu

let (a,b) = e in t 

Sau đó, vấn đề phức tạp hơn. Khó khăn chính với việc khớp mẫu là các chuyển đổi đi lại . Đó là, các phép tính có phương trình

C[let (a,b) = e in t] === let (a,b) = e in C[t]

và tìm ra (a) bối cảnh nào C[-]sẽ sử dụng và (b) làm thế nào để định hướng phương trình này trở nên khó khăn. IMO, trạng thái của nghệ thuật viết lại các cách tiếp cận theo phong cách là Viết lại mở rộng của Sam Lindley với Sums và Gabriel Scherer Quyết định tương đương với Sums và Loại rỗng , cả hai đều xem xét phép tính lambda được gõ với cả hai sản phẩm và tổng.

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.