In einigen funktionalen Sprachen sind teilweise angewandte Funktionen und Curry-Funktionen zwei ähnliche, aber unterschiedliche Konzepte.Sind die Konzepte der partiellen Anwendung und Curry in Haskell austauschbar?
Das Buch lesen Learn You a Haskell for Great Good, scheint der Autor diese austauschbar anzuwenden.
[Curry-Funktionen] Jede Funktion in Haskell benötigt offiziell nur einen Parameter.
...
wenn wir eine Funktion mit zu wenigen Parametern aufrufen, bekommen wir wieder eine teilweise angewandte Funktion, eine Funktion, was bedeutet, dass so viele Parameter nimmt, wie wir weggelassen.
Meine Frage ist: Sind die Konzepte der partiellen Anwendung und Curry in Haskell austauschbar?
Die ehrliche Antwort ist kurz und es ist ja. – hao
Für mich hat "currying" mit Funktionsdefinition zu tun, während "partielle Anwendung" mit Funktionsaufruf zu tun hat. Sie sind also nicht * genau * austauschbar, aber sie sind die Seiten einer Münze, und beide sind ohne die andere nicht sinnvoll. Wenn Sie sagen, dass sie in einigen funktionalen Sprachen "ähnlich, aber verschieden" sind, worauf beziehen Sie sich dann? – ruakh
Es ist auch interessant zu bemerken, dass, während das System vom * Typ * ausschließlich in Curry-unären Funktionen handelt, Funktionen im generierten GHC-Code * mehrere Argumente haben; Schließungen werden nur für teilweise angewandte Funktionen zugewiesen. Dies ist möglich, weil der Code unter der Curriculum-Interpretation, die * isomorph * zur unverfälschten Interpretation ist, typengeprüft wurde, dh es handelt sich um eine typerhaltende Optimierung. –