Có tất cả các trường hợp Haskell của typeclass áp dụng mà chúng tôi nhận được với nền tảng Haskell đã được chứng minh là đáp ứng tất cả các luật áp dụng? Nếu có, chúng tôi sẽ tìm thấy bằng chứng đó ở đâu?Bằng chứng về luật áp dụng cho các trường hợp haskell
Mã nguồn của Control.Applicative dường như không chứa bất kỳ bằng chứng nào cho thấy luật áp dụng cho các trường hợp khác nhau được giữ. Nó chỉ đề cập rằng
-- | A functor with application.
--
--Instances should satisfy the following laws:
Sau đó, chỉ nêu rõ luật trong nhận xét.
Tôi cũng tìm thấy một trường hợp tương tự cho các trường hợp của typeclasses khác (Alternative và Monad).
Người dùng của các thư viện này có phải tự xác minh các luật này không?
Nhưng tôi đã tự hỏi liệu bằng chứng nghiêm ngặt về các luật này đã được các nhà phát triển đưa ra ở nơi nào khác?
Một lần nữa, tôi biết rằng bằng chứng khắt khe về áp dụng (hoặc Monad) cho IO Monad, có liên quan đến nói chuyện với thế giới bên ngoài, nói chung, có thể rất phức tạp.
Cảm ơn.
Tôi cho rằng cũng có khả năng viết mã trong một hệ thống như Agda hoặc Coq và sau đó trích xuất mã nguồn Haskell từ nó. Thành thật mà nói tôi đã không cố gắng đó, nhưng kết quả sẽ là một bằng chứng hoàn toàn chính thức của các thuộc tính cần thiết. –
@Gabriel Cảm ơn.Giống như ListT, có bao nhiêu việc triển khai khác đã nhận thấy là sai? Có danh sách các triển khai cá thể nào không đúng không? Ngoài ra, nếu bao gồm toàn bộ bằng chứng là không khả thi do chiều dài, thì có thể đặt một siêu liên kết đến bằng chứng trong mã nguồn và đặt văn bản chứng minh trên Haskell.org như là một phần của tài liệu. – user1308560
@ user1308560 ListT là thư viện duy nhất trong thư viện chuẩn mà tôi biết nằm ngoài đầu của tôi. Ý tưởng liên kết có ý nghĩa. –