Iterierte Funktionsanwendung
Die Signatur einer Funktion deuten
Die Signatur der Funktion String.replace
kann man sich in der REPL anzeigen lassen.
> String.replace
<function> : String -> String -> String -> String
Bisher haben wir diese Signatur so gedeutet: Die Funktion String.replace
erwartet drei Übergabewerte von Typ String
und liefert einen Wert vom Typ String
zurück. Unklar war, warum die Übergabewerte auch mit dem Symbol ->
verknüpft wurden.
Die Signatur der Funktion String.replace
könnte man auch so schreiben:
> String.replace
<function> : String -> (String -> (String -> String))
Verdeutlichen lässt sich dies mit folgendem Black-Box-Diagramm.
Aufgabe 1
Erläutere wie die Signatur mit Klammern und das Black-Box-Diagramm zusammenhängen.
Aufgabe 2
Deute entsprechend die folgenden Signaturen.
> List.append
<function> : List a -> List a -> List a
> List.map
<function> : (a -> b) -> List a -> List b