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
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.
module TestMaybe exposing (..)
a: Maybe Int
a = Just 2
b: Maybe Int
b = Nothing
> import TestMaybe exposing (..)
> a
Just 2 : Maybe Int
> b
Nothing : Maybe Int
Interessant ist die vordefinierte Funktion Maybe.withDefault
, mit der man Maybe Int
-Daten in Int
-Daten umwandeln kann.
Zur Verarbeitung des Datenwerts Nothing
muss man einen Defaultwert vom Typ Int
angeben
> import TestMaybe exposing (..)
> a
Just 2 : Maybe Int
> Maybe.withDefault 0 a
2 : Int
> b
Nothing : Maybe Int
> Maybe.withDefault 0 b
0 : Int
Aufgabe 1
(a) Teste alle gezeigten Dialoge selbst.
(b) Teste analog den Datentyp Maybe Float
.
Aufgabe 2
Analysiere den Quelltext und ergänze im REPL-Dialog die fehlenden Rückgaben. Teste, indem du den Dialog selbst führst.
Deute auch den Defaultwert VW 0
.
module TestMaybe exposing (..)
type Befehl
= LI -- links
| RE -- rechts
| VW Int -- vorwärts ...
b1: Maybe Befehl
b1 = Just LI
b2: Maybe Befehl
b2 = Just (VW 2)
b3: Maybe Befehl
b3 = Nothing
> import TestMaybe exposing (..)
> b1
...
> b2
...
> b3
...
> Maybe.withDefault (VW 0) b1
...
> Maybe.withDefault (VW 0) b2
...
> Maybe.withDefault (VW 0) b3
...