Mit data definierst du eigene Typen: Aufzählungen (data Farbe = Rot | Gruen) oder Verbunde mit Feldern (data Person = Person { name :: String, alter :: Int }). Typklassen (class) beschreiben Verhalten wie ein Interface: Eq (Gleichheit), Ord (Ordnung), Show (Text). Mit deriving leitet der Compiler sie automatisch ab.
Algebraische Datentypen mit mehreren Varianten und Pattern Matching sind das Herzstück typischen Haskell-Codes.
data Form = Kreis Double | Rechteck Double Double
deriving (Show, Eq)
flaeche :: Form -> Double
flaeche (Kreis r) = pi * r * r
flaeche (Rechteck b h) = b * h
data Person = Person { name :: String, alter :: Int }
deriving Show
class Beschreibbar a where
beschreibe :: a -> String
instance Beschreibbar Person where
beschreibe p = name p ++ " (" ++ show (alter p) ++ ")"
main :: IO ()
main = do
print (flaeche (Rechteck 3 4))
putStrLn (beschreibe (Person "Mia" 17))Merke
datadefiniert eigene Typen- Typklassen beschreiben Verhalten
derivingleitet Show, Eq, Ord ab
Aufgabe
Definiere `data Wochentag = Mo | Di | Mi` und eine Funktion `istMontag`.