Fachkonzept - Currying
Eine neue Sichtweise
Eine Funktion mit mehreren Übergabeparametern kann man in eine Folge von Funktionen mit nur einem Übergabeparameter umwandeln. Man nennt diesen Vorgang Currying.
> String.replace "a" "u" "Hand"
"Hund" : String
> (String.replace "a" "u") "Hand"
"Hund" : String
> ((String.replace "a") "u") "Hand"
"Hund" : String
Das Black-Box-Diagramm verdeutlicht diese Sichtweise.
Partielle Funktionsanwendung
Wenn man bei einer Funktion mit mehreren Übergabeparametern nur an einige dieser Parameter Daten übergibt, so entstehen - passend zu der Sichtweise durch Currying - jeweils neue Funktionen. Diese Funktionen entstehen durch eine parielle Funktionsanwendung bei der Ausgangsfunktion.
> String.replace
<function> : String -> String -> String -> String
> String.replace "a"
<function> : String -> String -> String
> String.replace "a" "u"
<function> : String -> String
Nutzen partieller Funktionsanwendung
Partielle Funktionsanwendung wird häufig benutzt, wenn man eine Funktion mit mehreren Parametern nur in einer ganz speziellen Weise verwenden möchte. Hier ein Beispiel:
> List.map (String.replace "a" "u") ["Hand","Rahm","Rate"]
["Hund","Ruhm","Rute"] : List String
Quellen
- [1]: Black-Box-Diagramm String.replace - Urheber: KB - Lizenz: inf-schule.de