Soll ich eine Typenklasse verwenden oder nicht?
Ich habe einige Schwierigkeiten zu verstehen, wann ich eine Typenklasse in meinem Code verwende und wann nicht. ich meineerschaffe meine eigene, und nichtVerwendung bereits definiert natürlich typen. Durch Beispiel (sehr dummes Beispiel) sollte ich tun:
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 = ...
(Offensichtlich ist dies ein dummes, unvollständiges Beispiel).
Aber das ist viel für eine kleine Verwendung, nicht wahr? Warum sollte ich nicht etwas Einfaches tun und nur Funktionen definieren, ohne neue Datentypen und Typklassen (mit ihren Instanzen) zu definieren?
Dieses Beispiel ist zu einfach, aber in der Tat sehe ich oft solche Dinge (neue Datentypen + Typklassen + Instanzen), wenn ich Haskell-Code auf Github durchsuche, anstatt nur Funktionen zu definieren.
Wann sollte ich also neue Datentypen, Typenklassen usw. erstellen und wann sollte ich Funktionen verwenden?
Vielen Dank.