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?
12
A
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
- 1. Tôi có thể nhận được rãnh chữ trong ggplot2 không?
- 2. Tại sao tôi không nhận được cảnh báo từ Perl?
- 3. Tôi có thể thử/bắt cảnh báo không?
- 4. Tôi có thể khiến GCC cảnh báo về việc truyền các loại quá rộng đến các chức năng không?
- 5. fopen cảnh báo không được chấp nhận
- 6. Akka cảnh báo về "Quá nhiều trường hợp HashedWheelTimer"
- 7. Tôi nhận được cảnh báo JavaScript trong dự án mà tôi không tạo, đe dọa tôi?
- 8. Python: tránh cảnh báo pylint về quá nhiều đối số
- 9. Tôi có thể thấy lý do cảnh báo ở đâu?
- 10. Generics Java - có thể hạn chế T được Serializable không?
- 11. Tại sao Twitter trả về "Không thể xác thực chữ ký và mã thông báo oauth?"
- 12. hạn chế ký tự được đặt trong trường Textinput
- 13. Tôi không thể nhận được thông báo về thay đổi trạng thái pin?
- 14. Biến Delphi có thể chưa được khởi tạo cảnh báo
- 15. Tại sao tôi không nhận được cảnh báo khi tôi redeclare biến kiểm soát Forl foreach?
- 16. Làm cách nào để gia hạn chữ ký jar?
- 17. Làm thế nào tôi có thể bắt cảnh báo Perl vào nhật ký Log4perl?
- 18. Tôi có thể nhận được thông báo hay không, khi một ngày mới bắt đầu?
- 19. Nhận thông báo về chấm dứt quá trình Java
- 20. Tôi có thể cấm hoặc hạn chế quốc gia dựa trên IP không?
- 21. cảnh báo MSB3391: <DLL> không chứa bất kỳ loại nào có thể được đăng ký cho COM Interop
- 22. mô hình này có vẻ đầy đủ, nhưng tôi vẫn nhận được cảnh báo
- 23. Làm cách nào để tôi có thể bỏ qua cảnh báo của clang về việc sử dụng triển khai mục tiêu c không được chấp nhận?
- 24. Làm cách nào để báo cho Git cảnh báo tôi về các chi nhánh có thể bị xóa từ xa
- 25. Không có cảnh báo về phân bổ ngắn gọn (gcc)
- 26. Tôi có thể nhận được báo động fcntl và Perl để hợp tác không?
- 27. CẢNH BÁO: FacesMessage (s) đã được enqueued, nhưng có thể không được hiển thị
- 28. Tại sao PyLint cảnh báo về không __init__?
- 29. iOS - tôi nhận được cảnh báo bộ nhớ nhưng không biết tại sao
- 30. Tôi có thể hạn chế phương thức chung cho nhiều giao diện không?
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 ". –