2010-06-17 20 views

Trả lời

11

Ví dụ sử dụng có thể có thể sử dụng số TypeCompose của conal để tạo các máy biến áp đơn nguyên theo kiểu không có điểm.

type MyT = StateT Foo :. MaybeT :. ContT Bar 

(chỉ là một ví dụ, tôi không có ý tưởng những gì người ta sẽ làm gì với những foos và quán bar ..)

Thay vì:

type MyT m = StateT Foo (MaybeT (ContT Bar m)) 

(điều này sẽ có cùng kết quả ngoài newtype -wrappers)

Hiện tại, bạn cần sao chép mã bộ phối hợp cho các loại khác nhau và tiện ích mở rộng này sẽ xóa bỏ sự lặp lại và cho phép sử dụng một đoạn mã để thống trị tất cả.

1

Chúng rất hữu ích cho việc xác định các hàm hoạt động trên các nhà xây dựng dữ liệu với tính chất tùy ý, tất nhiên!

Ví dụ cụ thể có thể là một hàm, được cung cấp cho một hàm tạo dữ liệu có tính chất tùy ý, trả về một hàm tạo dữ liệu mới bao bọc hàm tạo đã có trong Some().

+1

Bạn có thể cho một ví dụ ? – solidsnack

11

Adding Polymorphic Kinds to GHC

Các nền cho câu hỏi này sẽ là motivation in general for a more expressive kind system.

Đó là lý do tổng thể để thêm các loại đa hình vào Haskell là cải thiện trải nghiệm của lập trình cấp loại. Hiện tại, mức lập trình loại ở Haskell được tiến hành ở mức "kind" về cơ bản chưa được phân loại. Một ngôn ngữ loại phong phú hơn sẽ làm cho lập trình cấp loại trong Haskell, nói chung, dễ dàng hơn.

Một ví dụ cụ thể hơn sẽ là để loại bỏ các (động) hạn chế Typeable từ Generics của phong cách SYB (citation), cũng như cải thiện hỗ trợ tổng thể cho lập trình generic-kinded cao ..