Mit der folgenden Funktion f mit zwei Argumenten: Was ist die Standardmethode, um map nur auf x anzuwenden?
Eine kleine Diskussion über Curry und teilweise Anwendung
In FP-Begriffen ist Ihre Funktion f
"uncurried" - während sie konzeptionell zwei Argumente benötigt, sie ' in einer einzigen Produktstruktur gebündelt. In Python ist alles unbeirrt, die ganze Zeit. Sie müssen alle Argumente auf einmal oder keine von ihnen geben.
Um dies zu umgehen, gibt es verschiedene Tricks, aber konzeptionell möchten Sie nur die Funktion "curry". Das heißt, transformiere f(x,y)
in f(x)
, was eine neue Funktion g(y)
zurückgibt.
In standardmäßig voreingestellten Sprachen können Sie diese Übersetzung leicht als:
schreiben %Vor% So nimmt curry
Ihre curried f
und ihre Produktargumente separat und wendet die Argumente an, sobald sie alle verfügbar sind. Das Gegenteil ist auch ziemlich einfach:
Wie verhält sich das zur partiellen Anwendung?
In einer ungezwungenen Sprache kann jedes der Argumente der Reihe nach angewendet werden (z. B. teilweise in Bezug auf die Arität der Funktion). In einer Curry-Sprache müssen Sie zuerst einige Tricks anwenden, um die Funktion zu lösen, wie in den obigen Beispielen.
Ich denke, es ist flexibler, in einer Curry-durch-Standard-Umgebung zu sein, da eine teilweise Anwendung kostenlos ist. In einer solchen Umgebung ist es üblich, Funktionen zu verketten, die Daten modifizieren in eine Pipeline einbauen . Z.B. eine Pipeline von ganzzahligen Modifikationen:
%Vor%ist nur eine Kette von teilweise angewendeten, nicht gecurried Funktionen, zusammengesetzt, von denen jede auf dem Ausgang der vorherigen Funktion arbeitet. Dies kann nett sein, da es Probleme visuell trennt.
Tags und Links python functional-programming