Ü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 1 ['a','b','c','d']
Just 'a' : Maybe Char
> elementAnPos 2 ['a','b','c','d']
Just 'b' : Maybe Char
> elementAnPos 3 ['a','b','c','d']
Just 'c' : Maybe Char
> elementAnPos 4 ['a','b','c','d']
Just 'd' : Maybe Char
> elementAnPos 5 ['a','b','c','d']
Nothing : Maybe Char
> elementAnPos 0 ['a','b','c','d']
Nothing : Maybe Char
> elementAnPos -2 ['a','b','c','d']
Nothing : Maybe Char
>
Entwickle eine Funktionsdefinition. Man kann dabei so vorgehen:
elementAnPos 3 ['a','b','c','d']: List.drop 2 ['a','b','c','d'] -> ['c','d'] List.take 1 ['c','d'] -> ['c'] List.head ['c'] -> Just 'c'