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
...