Ich habe einige Posts hier über Schließungen und Curry gelesen, aber ich habe das Gefühl, dass ich die Antwort nicht gefunden habe. Was sind die Unterschiede und möglicherweise die Ähnlichkeiten von Verschlüssen und Curry? Danke für die Hilfe :)Was sind die Unterschiede und mögliche Ähnlichkeiten von Verschlüssen und Curry?
Antwort
Curry ist in erster Linie ein mathematisches Konzept. Es ist die gerade Beobachtung, dass für jede n ary Funktion f: S × ... S n → R, Sie einen neuen Funktion fprime definieren kann (gerade einen Abschlag Fehler!) Mit n-1 Parameter, bei denen der erste Parameter durch eine Konstante ersetzt wird. Also, wenn Sie eine Funktion add(a,b)
haben, können Sie eine neue Funktion add1(b)
als
add1(b) ::= add(1, b)
... Lesen definieren „:: =“ als „definiert zu sein.“
Ein Verschluss 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 ist, dass Sie einen Verschluss, um currying zu implementieren können: Sie Ihre add1
Funktion oben, indem sie einen Verschluss, dass der erste Parameter gebunden, in dem auf 1
Was Sie beschrieben haben, ist Teilbewertung aufbauen konnte anstatt zu currying. Verwandt, aber nicht genau dasselbe. –