i

Funktionen höherer Ordnung

Funktionen die Funktionen verarbeiten

Um einige Probleme elegant zu lösen, kann es hilfreich sein Funktionen zu entwerfen, die selbst Funktionen als Übergabedaten erhalten oder Funktionen als Rückgabe liefern. In der Funktionalen Programmierung ist das ganz natürlich möglich, wir können Funktionen hier wie jeden anderen Datentyp behandeln.

Funktionen, die Funktionen als Übergabedaten erhalten und/oder Funktionen als Rückgabedatum liefern, nennen wir Funktionen höherer Ordnung.
In diesem Kapitel haben wir einige Funktionen höherer Ordnung erstellt. Unbewusst haben wir jedoch schon einige Funktionen höherer Ordnung genutzt...

Aufgabe 1: Bekannte Funktionen höherer Ordnung

Bestehende Datei - listenFunktionen.rkt

(a) Betrachte die in dieser Datei verwendeten bzw. definierten Funktionen. Sammle sämtliche Funktionen höherer Ordnung die du findest.

(b) Begründe warum Funktionen höherer Ordnung bei der Anwendung auf Listen besonders nützlich sind.


Aufgabe 2: Signaturen von Funktionen höherer Ordnung

Bestehende Datei - listenFunktionen.rkt

Ob es sich bei einer Funktion um eine Funktion höherer Ordnung handelt, wird anhand der Funktionssignatur direkt ersichtlich. Betrachten wir unsere Funktion Infix mit einer zulässigen Signatur:

(: infix (real (real real -> real) real -> real))
(define infix
  (lambda (x f y)
    (f x y)))

(a) Woran erkennst du in der Signatur, dass es sich um eine Funktion höherer Ordnung handelt?

(b) Teste und begründe welche der folgenden drei Aufrufe anhand der obigen Signatur zulässig sind.

> (infix -18.2 max -20)
> (infix "Hallo " string-append "Welt!")
> (infix 14 < 13)

(c) Passe die Signatur so an, dass diese für sämtliche der drei Ausdrücke zulässig ist.
Tipp: Wenn du dir unsicher bist, schau dir die Signaturen von Listenfunktionen nochmals an.

(d) Ergänze die Signaturen für deine in diesem Kapitel erstellten Funktionen höherer Ordnung.

Suche

v
100.137.3.5.1.2 Funktionen höherer Ordnung
Kopieren durch Anklicken

Rückmeldung geben