Currying
Consiste en convertir una función con múltiples parámetros en diferentes funciones con menos parámetros.
// función sin formato currying (SC = sin currying)
const personaSC =
(nombre, primerApellido, segundoApellido) =>
'Mi nombre es ' + nombre + ' ' + primerApellido + ' ' + segundoApellido;
personaSC('Jhon', 'Doe', 'Blast'); // Mi nombre es Jhon Doe Blast
// función con formato currying (CC = con currying)
const personaCC =
(nombre) =>
(primerApellido) =>
(segundoApellido) =>
'Mi nombre es ' + nombre + ' ' + primerApellido + ' ' + segundoApellido;
const jhon = personaCC('Jhon')('Doe');
jhon('Blast'); // Mi nombre es Jhon Doe Blas