Однажды я задал вопрос о начинающих haskell, использовать ли данные /newtype или typeclass. В моем конкретном случае оказалось, что не требуется никаких классов. Кроме того, Том Эллис дал мне блестящий совет, что делать, когда вы сомневаетесь:
Самый простой способ ответить на это, который в основном правильный:
использовать данные
Я знаю, что typeclasses может сделать несколько вещей немного красивее, но не так много AFIK. Мне также кажется, что модели обычно используются для работы с мозговыми стволовыми материалами, но в новых новинках новые стикеры вряд ли когда-либо появляются, и все делается с помощью данных /newtype.
Теперь я задаюсь вопросом, есть ли случаи, когда typeclasses абсолютно необходимы, и вещи не могут быть выражены с помощью data/newtype?
Отвечая на аналогичный вопрос на qaru.site/info/182447/..., Габриэль Гонзалес сказал
Используйте классы типов, если:
Существует только одно правильное поведение для заданного типа
Класс типа имеет связанные уравнения (т.е. "Законы" ), что все экземпляры должны удовлетворять
Хмм..
Или это типы и типы данных /newtype несколько конкурирующих концепций, которые сосуществуют по историческим причинам?