Cuales son las ventajas en el mundo real de usar Currying?

Pregunta de la clase:
Currying
Gabriel De Andrade

Gabriel De Andrade

Pregunta
studenthace 6 años

Cuales son las ventajas en el mundo real de usar Currying?

7 respuestas
para escribir tu comentario
    Jose Daniel Hernandez Quiceno

    Jose Daniel Hernandez Quiceno

    studenthace 4 años

    Se puede volver un tema complejo y veo que @davidherzlos nos regala un ejemplo para entenderlo mejor, sin embargo, este ejemplo tiene varios errores y creo que puede confundir un poco, así que, aquí está el mismo ejemplo funcionando correctamente con la definición de cada función usada.

    const saludo = (mensaje) = (name) => `${mensaje} ${name}`; const saludarFeliz = saludo('Hola estimado'); saludarFeliz('Giddo van Rossum'); // Hola estimado Giddo van Rossum saludarFeliz('Rasmus Lerdorf')// Hola estimado Rasmus Lerdorf const saludarEnojado = saludo('Ashh!') saludarEnojado('Giddo van Rossum')// Ashh! Giddo van Rossum saludarEnojado('Rasmus Lerdorf')// Ashh! Rasmus Lerdorf const compose = (...fns) => (name) => fns.reduceRight((prop, f) => f(prop), name); const saludoBipolar = compose(saludarEnojado, saludarFeliz); saludoBipolar('Brendan Eich')// Ashh! Hola estimado Brendan Eich

    Pequeños cambios que aclaran el buen ejemplo de @davidherzlos

    Matias Niz

    Matias Niz

    studenthace 6 años

    Lo mismo que @davidherzlos un claro ejemplo es la implementacion de middleware's en express.

    David Antonio Ordóñez Cornejo

    David Antonio Ordóñez Cornejo

    studenthace 6 años

    La ventaja que yo veo en usar currying es que puedes convertir funciones que reciben muchos parametros en funciones que reciben un solo parámetro, lo cual la vuelve apta para ser compuesta con otras funciones que de igual forma reciben un solo parámetro.

    Al hacer currying, digamos, que podemos preconfigurar funciones y hacer código mucho mas modular.

    const saludo = (mensaje) => (name) => name + mensaje const saludarFeliz = saludo('Hola estimado') saludarFeliz('Giddo van Rossum') // Hola estimado Giddo van Rossum saludarFeliz('Rasmus Lerdorf') // Hola estimado Rasmus Lerdorf saludarFeliz('Brendan Eich') // Hola estimado Brendan Eich const saludarEnojado = saludo('Ashh!') saludarEnojado('Giddo van Rossum') // Ashh! Giddo van Rossum saludarEnojado('Rasmus Lerdorf') // Ashh! Rasmus Lerdorf saludarEnojado('Brendan Eich') // Ashh! Brendan Eich const saludoBipolar = compose(saludarEnojado, saludarFeliz) saludoBipolar('Brendan Eich') // Ashh! Hola estimado Brendan Eich
    David Antonio Ordóñez Cornejo

    David Antonio Ordóñez Cornejo

    studenthace 6 años

    Excelente explicacion

    Gabriel De Andrade

    Gabriel De Andrade

    studenthace 6 años

    Gracias JJ! Gran aporte, a lo largo de la práctica he ido aplicando los conceptos y me he encontrado con ventajas claras sobretodo en closures, como cuando quieres pasar una función como parametro sin ejecutarla como con los

    addEventListener
    puedes usar los closures y si quieres mas adelante ejecutarla de otra manera con Currying.

    Segin vayas integrando este paradigma en tus aplicaciones vas a ir dandote cuenta de cuando necesitas utilizar todos estos elementos

    Bryan Estiven Silva Mercado

    Bryan Estiven Silva Mercado

    studenthace 6 años

    tenía la misma duda gracias por el aporte

    Julio J Yépez

    Julio J Yépez

    studenthace 6 años

    Una de las ventajas es que si al momento de invocar una función que espera más de un parámetro, tienes solo uno de ellos, pues la función no generará un error, sino que retornará otra función que estará preparada para recibir el resto de parámetros que esperabas originalmente.

    Es un poco complejo de explicar / entender, más aún en el contexto de JavaScript … pero en lenguajes “con alma de programación funcional” como Heskell, es sumamente útil y común encontrarle uso práctico a esta técnica.

    En este artículo seguramente lo verás con mayor claridad.

Curso de Programación Funcional en JavaScript por Bedu

Curso de Programación Funcional en JavaScript por Bedu

Escribe JavaScript con las ventajas de la programación funcional: aprende a generar código a través de funciones que se van ejecutando de forma práctica y fácil conforme se requieren. Olvida la programación en cascada, escribe JavaScript de forma distinta y toma el control de tu desarrollo con Platzi.

Curso de Programación Funcional en JavaScript por Bedu
Curso de Programación Funcional en JavaScript por Bedu

Curso de Programación Funcional en JavaScript por Bedu

Escribe JavaScript con las ventajas de la programación funcional: aprende a generar código a través de funciones que se van ejecutando de forma práctica y fácil conforme se requieren. Olvida la programación en cascada, escribe JavaScript de forma distinta y toma el control de tu desarrollo con Platzi.