У меня есть некоторые трудности, чтобы понять, когда вы используете и когда не используете typeclass в моем коде. Я имею в виду создать свой собственный, а не использовать уже определенные типы классов, конечно. Например (очень глупый пример), должен ли я делать:
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 вместо определения только функций.
Итак, когда мне нужно создавать новые типы данных, типы и т.д., и когда я должен использовать функции?
Спасибо.