Funktionell programmering i JavaScript Del 2 - Kombinatorer
Pawel Ged
Vue.js-utvecklare
Detta är den andra delen av vår artikelserie om kraften i funktionell programmering i JavaScript. Kolla in den här artikeln för att utöka din kunskap om kombinatorer.
Introduktion till kombinatorer
Kombinatorer är funktioner på högre nivå som gör att du kan kombinera funktioner, variabler eller andra kombinatorer. Vanligtvis innehåller de inte deklarationer av egna variabler eller affärslogik. De är de enda som kan spola kontrollen i ett funktionsprogram.
I den här artikeln ska jag försöka ta upp några av dem:
Kran
Currying
Rörledning/Compose
Gaffel
Växling
Sekvens
Kran
En kombinator är mycket användbar för funktioner som inte returnerar någonting. Den tar den funktion som parametern går till och sedan returneras den.
const sum = (a, b, c) => a + b + c
const currySum = curry(sum)
/*
möjliga anrop
currySum(a)(b)(c),
currySum(a)(b,c),
currySum(a,b)(c),
currySum(a,b,c)
*/
currySum(1) // (b, c) => 1 + a + b eller (b) => (c) => 1 + a + b
currySum(5)(10) // (c) => 5 + 10 + b
currySum(5, 10) // (c) => 5 + 10 + b
currySum(5)(10)(20) // 35
currySum(5, 10)(20) // 35
currySum(5)(10, 20) // 35
const divideBy = curry((a, b) => b / a)
const multiplyBy = curry((a, b) => a * b)
const divideByTwo = divideBy(2)
divideByTwo(10) // returnerar 5
const multiplyByFive = multiplyBy(5)
multiplyByFive(10) // returnerar 50
Rörledning/Compose
Genom komposition är det möjligt att skicka data från en funktion till en annan. Det är viktigt att funktionerna tar samma antal argument. Skillnaden mellan pipe och compose är att den första exekverar funktionen från början till slut, medan compose anropar dem från slutet.