Funktionale Programmierung in JavaScript Teil 2 - Kombinatoren
Pawel Ged
Vue.js Entwickler
Dies ist der zweite Teil unserer Artikelserie, die sich mit den Möglichkeiten der funktionalen Programmierung in JavaScript beschäftigt. Lesen Sie diesen Artikel, um Ihr Wissen über Kombinatoren zu erweitern.
Einführung in die Kombinatoren
Kombinatoren sind Funktionen auf höherer Ebene, mit denen Sie Funktionen, Variablen oder andere Kombinatoren kombinieren können. Normalerweise enthalten sie keine Deklarationen ihrer eigenen Variablen oder Geschäftslogik. Sie sind die einzigen, die die Steuerung in einem Funktionsprogramm spülen.
In diesem Artikel werde ich versuchen, einige von ihnen zu behandeln:
Tippen Sie auf .
Currying
Pfeifen/Komponieren
Gabel
Abwechslung
Sequenz
Tippen Sie auf .
Ein Kombinator ist sehr nützlich für Funktionen, die nichts zurückgeben. Er nimmt die Funktion, an die der Parameter geht, und gibt sie dann zurück.
const sum = (a, b, c) => a + b + c
const currySum = curry(sum)
/*
mögliche Aufrufe
currySum(a)(b)(c),
currySum(a)(b,c),
currySum(a,b)(c),
currySum(a,b,c)
*/
currySum(1) // (b, c) => 1 + a + b oder (b) => (c) => 1 + a + b
currySum(5)(10) // (c) => 5 + 10 + b
currySum(5, 10) // (c) => 5 + 10 + b
currySum(5)(10)(20) // 35
currySumme(5, 10)(20) // 35
currySumme(5)(10, 20) // 35
const divideBy = curry((a, b) => b / a)
const multiplyBy = curry((a, b) => a * b)
const divideByTwo = divideBy(2)
divideByTwo(10) // ergibt 5
const multiplyByFive = multiplyBy(5)
multiplyByFive(10) // ergibt 50
Pfeifen/Komponieren
Durch Komposition ist es möglich, Daten von einer Funktion an eine andere zu übergeben. Dabei ist es wichtig, dass die Funktionen die gleiche Anzahl von Argumenten annehmen. Der Unterschied zwischen pipe und compose besteht darin, dass erstere die Funktion vom Anfang bis zum Ende ausführt, während compose sie vom Ende her aufruft.
const length = (array) => array.length
const sum = (array) => array.reduce((a, b) => a + b, 0)
const divide = (a, b) => a / b
const arithmeticAverage = fork(divide, sum, length)
arithmetischerDurchschnitt([5, 3, 2, 8, 4, 2]) // ergibt 4
Abwechslung
Dieser Kombinator nimmt zwei Funktionen und gibt das Ergebnis der ersten zurück, wenn es wahr ist. Andernfalls gibt er das Ergebnis der zweiten Funktion zurück.