Currying ist in erster Linie ein mathematisches Konzept. Es ist die gerechte Beobachtung, dass für jede n -are Funktion f: S <0> ... S n → R , können Sie eine neue Funktion fprime definieren (hat gerade einen Markdown-Fehler gefunden!) mit n-1 -Parametern, wobei dieser erste Parameter durch eine Konstante ersetzt wird. Wenn Sie also eine Funktion add(a,b)
haben, können Sie eine neue Funktion add1(b)
als
add1(b) ::= add(1, b)
... Lesen von "::=" wie "definiert ist".
Eine Schließung ist eher ein Programmierkonzept. (Natürlich ist alles in der Programmierung auch ein mathematisches Konzept, aber die Closures wurden wegen der Programmierung interessant.) Wenn Sie eine Closure konstruieren, binden Sie eine oder mehrere Variablen; Sie erstellen einen Codeabschnitt, an den einige Variablen gebunden sind.
Die Beziehung besteht darin, dass Sie eine Closure verwenden können, um currying zu implementieren: Sie könnten Ihre add1
-Funktion oben erstellen, indem Sie eine Closure machen, in der der erste Parameter an 1 gebunden ist.