Tôi đọc một article mà nói:Chức năng nào bạn nhận được miễn phí với Functors hoặc các loại lớp khác?
Cung cấp các trường hợp cho nhiều kiểu lớp học tiêu chuẩn [functors] sẽ ngay lập tức cung cấp cho bạn rất nhiều chức năng cho thực tế miễn phí
Câu hỏi của tôi là: những gì là chức năng này mà bạn nhận được miễn phí (cho functors hoặc loại lớp khác)? Tôi biết định nghĩa của một functor là gì, nhưng tôi phải làm gì cho miễn phí bằng cách xác định một cái gì đó như một functor/loại lớp khác. Một cái gì đó khác hơn là một cú pháp đẹp hơn. Lý tưởng nhất đây sẽ là các hàm tổng quát và hữu ích hoạt động trên các hàm/các lớp kiểu khác.
trí tưởng tượng của tôi (có thể là sai) về những gì có nghĩa là miễn phí là chức năng của loại này: TypeClass x => useful x y = ..
== Sửa/Additition ==
Tôi đoán tôi chủ yếu hỏi về trừu tượng hơn (và não boggling) loại-lớp học, giống như những người trong this image. Đối với các lớp trừu tượng ít hơn như Ord, trực giác hướng đối tượng của tôi hiểu được.
'bảo vệ' yêu cầu 'MonadPlus'. –
@DanielFischer: Rất tiếc. Điểm tốt. –
Vì dường như chỉ có một số ít các chức năng thư viện như vậy, ngay cả đối với đơn nguyên vốn là một loại lớp khá phong phú, tôi đã kết luận rằng nó không có khả năng xảy ra. Đó là _theoretically_ có thể là mã của bạn có thể tổng quát một cách kỳ diệu cho tất cả các monads, nhưng thực tế nếu chúng tồn tại, tôi sẽ thấy rất nhiều chức năng hữu ích hơn cho các monads. – user1138184