Hầu hết mã Haskell tôi thấy sử dụng các cấu trúc trực tiếp như danh sách và cây cối. Ví dụ, người ta thường cho một Haskeller viết:Tương đương với các module của OCaml trong Haskell là gì?
fillRect :: Color → Bounds → Image → Image
mẫu đó có một vấn đề: nếu sau này các lập trình viên quyết định sửa đổi định nghĩa về "Hình ảnh", hoặc sử dụng một cấu trúc dữ liệu, sau đó ông sẽ phải refactor mỗi đoạn mã duy nhất bằng cách sử dụng nó. Trong OCaml, bạn có thể chỉ cần sử dụng một mô-đun xác định một giao diện cho một hình ảnh, và sau đó quyết định khi triển khai cụ thể sau này.
Thay thế Haskell cho mô-đun OCaml là gì?
Chữ ký loại đó có nghĩa là 'fillRect' sử dụng (hoặc thậm chí có quyền truy cập vào) chi tiết triển khai của loại' Hình ảnh' như thế nào? Làm thế nào bạn sẽ viết chữ ký đó khác nhau trong OCaml (khác với sự khác biệt cú pháp rõ ràng và các quy ước đặt tên khác nhau)? – sepp2k
[Đây là tương tự Haskell] (http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-typeclass/) của những gì bạn mô tả. Nó không mạnh bằng các mô-đun Ocaml (ít nhất, không có nhiều phần mở rộng), nhưng nó bao gồm các trường hợp sử dụng phổ biến nhất. Chỉ cần ghi lại các hàm đa hình trên loại hỗ trợ các hoạt động đó. –
Ba lô là một nỗ lực để có được một số hình thức mô-đun vào Haskell - http://plv.mpi-sws.org/backpack/ – nlucaroni