Implementierung von map
Rekursive Struktur
Die folgende Funktion demonstriert die rekursive Grundidee für die Verarbeitung einer Liste.
verdoppeln : List Int -> List Int
verdoppeln liste =
case liste of
[] ->
[]
anfang :: rest ->
anfang * 2 :: verdoppeln rest
Aufgabe 1
Teste die Funktion verdoppeln
mit mehreren Beispielen
und erkläre, wie die Funktion arbeitet.
Gehe dabei insbesondere auf die Mustererkennung und die rekursive
Struktur der Funktion ein.
map für beliebige Listen
Die map
-Funktion kann auf beliebige Listen angewendet werden.
Die als Parameter übergebene Funktion muss nur zu den Datentypen der
Eingangsliste und der Ausgangsliste passen.
Die map
-Funktion hat deshalb den folgenden Typ:
map : (a -> b) -> List a -> List b
Aufgabe 2
Erstelle ähnlich der Funktion verdoppeln
eine Funktion
map
, die eine beliebige Funktion auf alle Elemente einer
Liste anwendet.
Teste sie z.B. mit den Aufrufen:
> map ((+) 1) [1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
> map toUpper ['a', 'b', 'c', 'd', 'e']
['A', 'B', 'C', 'D', 'E']
> map String.length ["Hund", "Katze", "Maus"]
[4, 5, 4]