Я видел, как многие люди жаловались на некоторые типы классов из стандартной библиотеки, говоря такие вещи, как "Monad должен требовать" Functor "или даже" Monad должен требовать аппликативного "," Аппликация должна требовать Pointed "," Num не должен require Show "и т.д. Итак, у меня есть несколько вопросов:
-
Есть ли аргументы в отношении того, как дерево зависимостей типа типа имеет эти "недостатки", воспринимаемые сообществом, или это просто результат того, как дела обстояли исторически?
-
Насколько сильно изменение в этом сломало бы существующий код?
-
Существуют ли альтернативные реализации классов базового типа (в частности, стрелки, монады, аппликативные и т.д.) вокруг того, что реализует "правильный" набор зависимостей классов?