2012-04-03 24 views
12

Công cụ GHC hoặc một số lint có thể cho tôi biết khi tôi đã cung cấp chữ ký loại cho một hàm có thể đa hình hơn không?Tôi có thể nhận được cảnh báo về chữ ký quá hạn chế không?

+1

Lưu ý rằng chữ ký chung nhất không phải lúc nào cũng tốt nhất. 'asTypeOf' sẽ khá vô nghĩa nếu nó có kiểu tổng quát hơn :) và ít quan trọng hơn, một số kỹ thuật hệ thống kiểu như vùng phụ thuộc vào các ràng buộc lớp" không sử dụng ". –

Trả lời

7

GHC không thực hiện việc này và tìm kiếm nhanh chóng Hackage không hiển thị gì cả. Một cách đơn giản, nhưng có thể khá hiệu quả để thực hiện một điều như vậy là tải mô-đun trong GHCi, sử dụng :browse để nhận tất cả các chữ ký kiểu, sau đó tải một bản sao mà không có bất kỳ chữ ký nào, sử dụng :browse một lần nữa, và so sánh hai đầu ra; sau đó chỉ in tất cả các dòng khác với các dấu ngoặc đơn, khoảng trắng và đổi tên alpha. Tuy nhiên, điều này sẽ không hoạt động hoàn hảo, đặc biệt là nếu bạn có định nghĩa mà các loại không thể suy ra.

Tôi có cảm giác một công cụ như vậy sẽ dẫn đến rất nhiều kết quả sai trong thực tế.

Các vấn đề liên quan