Übungen
Aufgabe 1
Der folgende REPL-Dialog verdeutlicht das Verhalten der vordefinierten Funktionen List.minimum
und List.maximum
.
> List.minimum [6,4,12,5]
Just 4 : Maybe number
> List.maximum [6,4,12,5]
Just 12 : Maybe number
Warum liefern die beiden Funktionen Daten vom Typ Maybe number
? Für welche Liste wird wohl der Datenwert Nothing
zurückgegeben?
Aufgabe 2
Der folgende REPL-Dialog verdeutlicht das Verhalten einer Funktionen elementAnPos
.
> elementAnPos
<function> : Int -> List a -> Maybe a
> elementAnPos 0 ['a','b','c','d']
Just 'a' : Maybe Char
> elementAnPos 3 ['a','b','c','d']
Just 'd' : Maybe Char
> elementAnPos 4 ['a','b','c','d']
Nothing : Maybe Char
> elementAnPos -2 ['a','b','c','d']
Nothing : Maybe Char
Entwickle eine Funktionsdefinition.
Nutze dazu vordefinierte Funktionen aus dem Modul List
.
Du findest die Dokumentation zu List
unter https://package.elm-lang.org/packages/elm/core/latest/List.
Aufgabe 3
(a)
Schreibe eine Funktion, die ein Maybe-Element eines beliebigen Typs entgegennimmt
und den Wert des Elements zurückgibt, falls es vorhanden ist.
Andernfalls - wenn der Wert also Nothing
ist -
soll die Funktion einen Standardwert zurückgeben.
Ein Aufruf erfolgt zum Beispiel wie folgt:
> wertVon "Gast" (Just "Otto")
"Otto" : String
> wertVon "Gast" Nothing
"Gast" : String
(b)
Vergleiche deine Lösung mit der Implementierung der Funktion
Maybe.withDefault
aus dem Modul Maybe
.
Du findest die Dokumentation zu Maybe
unter
https://package.elm-lang.org/packages/elm/core/latest/Maybe.
Den Quellcode von Maybe.withDefault
findest du,
wenn du auf den Link Source
klickst und dann im Ordner
src
nach Maybe.elm
suchst.
Aufgabe 4
Schreibe eine Funktion, die zwei Zahlen übergeben bekommt und vielleicht einen Gewinn zurückgibt - nämlich, dann wenn die Zahlen gleich sind. Wie der Gewinn genau aussieht, bleibt dir überlassen.