Ich habe in mehreren Artikeln und Blogs Hinweise auf Curried-Funktionen gesehen, aber ich kann keine gute Erklärung finden (oder zumindest eine, die Sinn macht!)
Antworten
Zu viele Anzeigen?
madeinQuant
Punkte
1530
WasitShafi
Punkte
347
Unten ist ein Beispiel für ein Currying in JavaScript, hier die multiplizieren Rückgabe der Funktion, die zum Multiplizieren verwendet wird x um zwei.
const multiply = (presetConstant) => {
return (x) => {
return presetConstant * x;
};
};
const multiplyByTwo = multiply(2);
// now multiplyByTwo is like below function & due to closure property in JavaScript it will always be able to access 'presetConstant' value
// const multiplyByTwo = (x) => {
// return presetConstant * x;
// };
console.log(`multiplyByTwo(8) : ${multiplyByTwo(8)}`);
Ausgabe
multiplyByTwo(8) : 16
- See previous answers
- Weitere Antworten anzeigen
13 Stimmen
[Gemäß der Definition einer kartesischen geschlossenen Kategorie gibt es eine fest Familie von Adjunktionen (natürlich parametrisiert durch A) zwischen X -> X x A und X -> X ^ A. Die Isomorphismen hom(X x A, Y) <-> hom(X, Y^A) sind die
curry
yuncurry
Funktionen von Haskell. Wichtig ist hier, dass diese Isomorphismen von vornherein festgelegt und somit in die Sprache "eingebaut" sind.3 Stimmen
Es gibt ein schönes Tutorial hier für currying in haskell learnyouahaskell.com/higher-order-functions#curried-functions Kurzkommentare sind, dass
add x y = x+y
(curried) ist anders alsadd (x, y)=x+y
(ohne Eile)