Der Datentyp Maybe
Die Typbeschreibung untersuchen
In der Dokumentation
(siehe Elm - Maybe)
findet man folgende Typbeschreibung für den Datentyp Maybe.
type Maybe a
= Just a
| Nothing
Mit unserem bisherigen Wissen über die Erzeugung von Datentypen hätten wir z.B. folgenden Datentyp definieren können:
type VielleichtInt
= Zahl Int
| KeineZahl
Aufgabe 1
Maybe und VielleichtInt.
Stelle insbesondere die Bedeutung der Typvariable a
in der Definition von Maybe heraus.
Maybe Int
Wenn man die Typvariable a mit Int konkretisiert, dann heißt das, dass es genau zwei Sorten von Daten
vom Datentyp Maybe Int gibt: Zum einen Daten wie Just 2 oder Just -4, die besagen,
dass genau die betreffende Int-Zahl gemeint ist. Zum anderen gibt es den Datenwert Nothing, der besagt,
dass es sich um nichts dergleichen (hier: um keine Int-Zahl) handelt.
Mit Daten vom Datentyp Maybe Int kann man genauso umgehen wie mit anderen Daten auch:
x : Maybe Int
x = Just 2
y : Maybe Int
y = Nothing
Wenn die beiden Werte x und y so definiert wurden,
lassen sie sich in der REPL wie folgt testen:
> x
Just 2 : Maybe Int
> y
Nothing : Maybe Int
Aufgabe 2
(a) Teste das selbst in der REPL.
(b) Teste analog den Datentyp Maybe Float oder Maybe String.
Pattern Matching
Um auf die Werte von Maybe-Daten zuzugreifen,
verwendet man Pattern Matching z.B. in der folgenden Art:
f : Maybe Int -> String
f wert =
case wert of
Nothing ->
"Keine Zahl"
Just _ ->
"Zahl"
g : Maybe Int -> Int
g wert =
case wert of
Nothing ->
-1
Just n ->
n
Das kennst du in genau dieser Form bereits von selbst
definierten Datentypen aus dem vorherigen Kapitel.
Der Datentyp Maybe ist also ein ganz normaler Datentyp,
der genauso wie andere - selbst definierte - Datentypen auch verwendet werden kann.
Der einzige Unterschied besteht darin, dass er bereits vordefiniert ist.
Aufgabe 3
Teste die beiden Funktionen in der REPL und erkläre wie sie funktionieren.