Quay trở lại ít nhất vào cuối những năm 1990 đã có những người muốn tích hợp restricted monads vào Haskell một cách thân thiện.Trạng thái hiện tại của monads bị hạn chế là gì?
Ví dụ: không có monads bị giới hạn, bạn không thể tạo đơn nguyên hiệu quả trong số Set
, Map
hoặc probability distributions. Đây là một SO question từ một vài năm trước đây, nơi một người nào đó khác đã gặp vấn đề này.
Có cách giải quyết khác nhau mà mọi người đã đưa ra, bao gồm:
Tạo một new type class cho mọi hạn chế càng tốt.
Sử dụng Template Haskell.
Sử dụng Constraint Kinds.
Tuy nhiên, không có cách tiếp cận nào có vẻ "kinh điển". Tôi đã tìm thấy một bình luận từ Don Stewart vào ngày this blog post, vào năm 2007, nơi ông đã gợi ý rằng chúng tôi đã "khá gần" để có những monads bị hạn chế với Indexed types.
Trạng thái hiện tại là gì? Bây giờ có một cách 'kinh điển' để thực hiện các monads bị hạn chế không? Hay chúng ta vẫn đang sống với cách giải quyết?
Tôi nghĩ rằng với các loại ràng buộc, nó là kinh điển như nó được, họ chỉ là một chút quá mới cho nó là giải pháp _common_ nhất. – leftaroundabout