Tôi có một cabal package xuất một loại NBT
có thể hữu ích cho các nhà phát triển khác. Tôi đã trải qua những rắc rối trong việc xác định một cá thể Arbitrary
cho kiểu của tôi, và nó sẽ là một sự xấu hổ khi không cung cấp cho các nhà phát triển khác để kiểm tra mã của họ tích hợp công việc của tôi.Trường hợp các trường hợp QuickCheck thuộc về gói cabal?
Tuy nhiên, tôi muốn tránh các tình huống mà trường hợp của tôi có thể cản trở. Có lẽ nhà phát triển khác có số different idea đối với trường hợp của Arbitrary
. Có lẽ sự phụ thuộc của gói của tôi trên một phiên bản cụ thể của QuickCheck có thể gây trở ngại hoặc không mong muốn trong các phụ thuộc của dự án khách hàng.
ý tưởng của tôi, không theo thứ tự đặc biệt, bao gồm:
- Rời khỏi dụ
Arbitrary
bên cạnh các định nghĩa của các loại, và để cho khách hàng đối phó với shadowing sơ thẩm hoặc trọng số phiên bản QuickCheck. - Làm ví dụ
Arbitrary
một trường hợp trẻ mồ côi trong một mô-đun riêng biệt trong cùng một gói, giả sửData.NBT.Arbitrary
. Sự phụ thuộc vào QuickCheck cho gói tổng thể vẫn còn. - Cung cấp ví dụ
Arbitrary
trong gói hoàn toàn riêng biệt, để nó có thể được liệt kê dưới dạng phụ thuộc thử nghiệm riêng biệt cho các dự án của khách hàng. - Điều kiện bao gồm cả trường hợp
Arbitrary
và phụ thuộc QuickCheck trong gói chính, nhưng chỉ khi một cờ như-ftest
được đặt.
Tôi đã thấy sự kết hợp của tất cả những điều này được sử dụng trong các thư viện khác, nhưng chưa tìm thấy bất kỳ sự đồng thuận nào hoạt động tốt nhất. Tôi muốn thử và làm cho nó ngay trước khi tải lên Hackage.
Có lẽ thực tế là bạn * đã * nhìn thấy tất cả các phương pháp này được sử dụng cho thấy rằng thực sự * không phải là * một sự đồng thuận? Hoặc ít nhất không phải là một giải pháp một kích thước phù hợp. –
@C. A. McCann: chắc chắn, và đó sẽ là một câu trả lời hợp lệ. Có vẻ như đáng để thảo luận. – acfoltzer