Должен ли я использовать Typeclasses или нет?

У меня есть некоторые трудности, чтобы понять, когда использовать, а когда не использовать класс типов в моем коде. Я имею в видусоздать свой собственный, и неиспользовать уже определенный Типовые классы, конечно. К примеру (очень глупый пример), я должен сделать:

data Cars = Brakes | Wheels | Engine
data Computers = Processor | RAM | HardDrive  

class Repairable a where
    is_reparaible :: a -> Bool

instance Repairable Cars where
    is_repairable (Brakes) = True
    is_repairable (Wheels) = False
    is_repairable (Engine) = False

instance Repairable Computers where
    is_repairable (Processor) = False
    is_repairable (RAM)       = False
    is_repairable (HardDrive) = True

checkState :: (Reparaible a) => a -> ... 
checkState a = ...

(Очевидно, это глупый, неполный пример).

Но это много для небольшого использования, нет? Почему я не долженДелать что-то простое и определять только функции без определения новых типов данных и классов типов (с их экземплярами).

Этот пример слишком прост, но на самом деле я часто вижу что-то подобное (новые типы данных + классы типов + экземпляры), когда я просматриваю код на Haskell на github вместо определения только функций.

Итак, когда мне следует создавать новые типы данных, классы типов и т. Д. И когда мне следует использовать функции?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос