Partielle Funktionsanwendung
Vertiefendes Verständnis partieller Funktionsanwendung
Du hast in einem vorherigen Abschnitt bereits partielle Funktionsanwendung kennengelernt. Dabei wurde immer der letzte Parameter einer Funktion weggelassen. Dadurch entstand eine neue Funktion, die nur einen Parameter erwartet. Das Konzept der partiellen Funktionsanwendung lässt sich jedoch auf eine beliebige Zahl an weggelassen Parametern anwenden.
Wir betrachten hier die vordefinierte Funktion String.replace
, mit der man in einer Zeichenkette Zeichenkombinationen durch andere ersetzen kann.
> String.replace
<function> : String -> String -> String -> String
> String.replace "a" "u" "Hand"
"Hund" : String
> String.replace "Fin" "Ti" "Finger"
"Tiger" : String
Aufgabe 1
Teste zunächst die Funktion String.replace
mit verschiedenen Funktionsaufrufen.
Beschreibe das Verhalten der Funktion mit Hilfe des Black-Box-Diagramms.
Nur einen Übergabewert verwenden
Die Funktion String.replace
wird mit nur einem Übergabewert aufgerufen.
Es entsteht eine neue Funktion.
> String.replace "a"
<function> : String -> String -> String
> (String.replace "a") "u" "Hand"
"Hund" : String
> (String.replace "a") "e" "hallo"
"hello" : String
> ersetze_a = String.replace "a"
<function> : String -> String -> String
> ersetze_a "u" "Hand"
"Hund" : String
Aufgabe 2
Erkläre in Worten, was die neu erzeugte Funktion String.replace "a"
leistet. Benutze das folgende Black-Box-Diagramm.
Zwei Übergabewerte verwenden
Die Funktion String.replace
wird jetzt mit zwei Übergabewerten aufgerufen.
Es entsteht wiederum eine neue Funktion.
> String.replace "a" "u"
<function> : String -> String
> (String.replace "a" "u") "Hand"
"Hund" : String
> (String.replace "a" "u") "Rahm"
"Ruhm" : String
> ersetze_a_u = String.replace "a" "u"
<function> : String -> String
> ersetze_a_u "Hand"
"Hund" : String
Aufgabe 3
Erkläre in Worten, was die neu erzeugte Funktion String.replace "a" "u"
leistet. Benutze das folgende Black-Box-Diagramm.