Tôi đang gặp sự cố khi sử dụng hệ thống kiểu của Haskell một cách thanh lịch. Tôi chắc chắn rằng vấn đề của tôi là một vấn đề phổ biến, nhưng tôi không biết làm thế nào để mô tả nó ngoại trừ các thuật ngữ cụ thể cho chương trình của tôi.Đạt được sự trừu tượng phù hợp với hệ thống kiểu của Haskell
Các khái niệm Tôi đang cố gắng để biểu diễn là:
datapoints, mỗi trong số đó có một trong nhiều hình thức, ví dụ (id, số lượng các trường hợp, số lượng điều khiển), (id, số lượng các trường hợp, dân số)
bộ dữ liệu và thông tin tổng hợp: (bộ id, tổng số trường hợp, tổng số điều khiển), với các chức năng để thêm/loại bỏ điểm (vì vậy đối với từng nhiều điểm, có nhiều tương ứng của bộ)
tôi có thể có một lớp học của các loại điểm và xác định từng nhiều điểm as type riêng của mình. Ngoài ra, tôi có thể có một loại điểm và một hàm tạo dữ liệu khác nhau cho mỗi loại. Tương tự cho các tập hợp các điểm.
tôi có ít nhất một mối quan tâm với mỗi cách tiếp cận:
Với các lớp học kiểu: Tránh tên hàm va chạm sẽ gây phiền nhiễu. Ví dụ, cả hai loại điểm có thể sử dụng một hàm để trích xuất "số lượng các trường hợp", nhưng loại lớp không thể yêu cầu chức năng này bởi vì một số loại điểm khác có thể không có trường hợp.
Không có loại lớp: Tôi không muốn xuất các trình tạo dữ liệu từ mô-đun Point (cung cấp các hàm khác, an toàn hơn để tạo giá trị mới). Nếu không có các nhà xây dựng dữ liệu, tôi sẽ không thể xác định được giá trị điểm nào của một giống nào đó.
Thiết kế nào có thể giúp giảm thiểu những vấn đề này (và các vấn đề khác)?
Trong hoàn cảnh nào bạn cần phải đối xử với các điểm dữ liệu của bạn tương tự? Bạn nói rằng mỗi mẫu sẽ cần nhiều tập hợp riêng của mình và các hoạt động như "số lượng các trường hợp" không phổ biến. –