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