Доказано ли, что все экземпляры Haskell класса Applicative, которые мы получаем с платформой Haskell, удовлетворяют всем законам Applicative? Если да, то где мы можем найти эти доказательства?
Исходный код Control.Applicative, похоже, не содержит никаких доказательств того, что применимые законы для различных случаев действительно соблюдаются. Он просто упоминает, что
-- | A functor with application.
--
--Instances should satisfy the following laws:
Затем он просто указывает законы в комментариях.
Я нашел аналогичный случай и для экземпляров других классов типов (Альтернатива и Монада).
Должны ли пользователи этих библиотек сами проверять эти законы?
Но мне было интересно, были ли предоставлены разработчики где-то в другом месте строгие доказательства этих законов?
Опять же, я осознаю, что строгое доказательство законов Applicate (или Monad) для IO Monad, которое включает в себя общение с внешним миром в целом, может быть очень сложным.
Спасибо.