Fachkonzept: Listenfunktion map und anonyme Funktionen
Die Listenfunktion map
Mit der Funktion map können wir eine Funktion auf jedes
Element einer Liste anwenden.
map bekommt eine Funktion und eine Liste übergeben.
Die übergebene Funktion wird anschließend auf jedes Listenelement angewandt. Die neu entstandenen
Elemente werden zu einer neuen Liste zusammengefügt und zurückgegeben.
Ein map
-Ausdrucks in Racket besteht aus:
-
Dem Operator
map
- Einer Funktion als ersten Operanden
- Einer Liste als zweiten Operanden.
(map funktion liste)Da die übergebene Funktion auf alle Elemente der übergebenen Liste angewendet wird, gilt die folgende Einschränkung:
Wenn die Liste Elemente vom Typ
%a
beinhaltet, muss die Funktion von der Signatur %a -> %b
sein.
Für die Funktion
map
ergibt sich somit die Signatur
((%a -> %b) (list-of %a) -> (list-of %b))
.
Beispiele:
Der Ausdruck
(map ceiling (list 4.5 3.14 7 -8 -12.7 0.3))entspricht:
((real -> integer) (list-of real) -> (list-of integer))
Der Ausdruck
(map string-length (list "Informatik" "Racket" "Funktion"))entspricht:
((string -> natural) (list-of string) -> (list-of natural))
Anonyme Funktionen Listenfunktion map
Anstelle der Nutzung von vordefinierten Funktionen, welche wir über ihren Funktionsnamen verwenden können, können wir auch die Funktionslogik direkt alslambda
-Ausdruck übergeben.
Eine anonyme Funktion ist eine Funktion, für die kein Name definiert worden ist.
In Racket entspricht dies dem
Die Nutzung einer anonymen Funkion kann überall dort erfolgen, wo eine Funktion genutzt wird.
In Racket entspricht dies dem
lambda
-Ausdruck einer Funktionsdefinition.
Beispiele innerhalb eines map
-Ausdrucks:
(map (lambda (x) (* x 2)) (list 2 4 8 16 32))
(map (lambda (name) (string-append "Hallo " name)) (list "Rajana" "Franka" "Danijela" "Milanka"))