17 lines
813 B
Markdown
17 lines
813 B
Markdown
# Übungsaufgabe 2: Maybe (optional)
|
|
|
|
## Einführung
|
|
|
|
Öffne GHCi und versuche, eine leere Liste an die Funktion *head* zu übergeben. Was passiert?
|
|
|
|
## Anweisungen
|
|
Die Standardfunktionen *head*, *tail*, *last* und *init* sind für leere Listen problematisch, weil sie Fehler werfen. Dein Ziel ist es, eigene Versionen dieser Funktionen zu schreiben, die nie fehlschlagen. Die Funktionen sollen *Just x* zurückgeben, wenn die Liste mindestens ein Element enthält, und *Nothing*, wenn die Liste leer ist.
|
|
|
|
So könnte die Typannotation deiner sicheren Funktion beispielsweise aussehen:
|
|
```safeHead :: [a] -> Maybe a```
|
|
|
|
|
|
## Ausführen und Testen
|
|
Kompiliere den Code, führe das Programm aus und überprüfe die Ausgaben. Alle Ausgaben sollten *True* sein, wenn *Just* und *Maybe* korrekt implementiert wurden.
|
|
|