i

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

Suche

v
100.110.2.14.1.1.2
inf-schule.de/entwuerfe/fp_elm_alteversion/elm_programme/fehlerbehandlung/benutzereingaben/lernstrecke/maybe
inf-schule.de/100.110.2.14.1.1.2
inf-schule.de/@/page/aIcIB4FzuFTiFTTd

Rückmeldung geben