¿Hay alguna diferencia entre 'curry' y 'cierre' en JavaScript?


Respuesta 1:

Crear un cierre no es más que acceder a una variable fuera del alcance de una función. Tenga en cuenta que una función dentro de una función no es un cierre. Los cierres siempre se usan cuando es necesario acceder a las variables fuera del alcance de la función.

Aquí está el ejemplo de cierres

Curry es convertir una sola función de n argumentos en n funciones con un solo argumento cada uno. Entonces puede decir que Curry es una forma de reducir las funciones de más de un argumento a funciones de un argumento.

Aquí está el ejemplo de la función Curry en JavaScript

Las funciones de curry utilizan la propiedad de Closures.


Respuesta 2:

Las otras respuestas son correctas, ya que Curry y Closures son dos conceptos diferentes. Sin embargo, están relacionados en el sentido de que ambos pueden usarse para lograr algunas de las mismas cosas.

Tome por ejemplo el siguiente cierre para realizar la misma funcionalidad que la aplicación parcial

const makeAdder (x) {
return (y) => {
devolver x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Esto a menudo se logra con curry así (usando ramda.js)

const makeAdder = (x, y) => {
 devolver x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Entonces, sí, los dos son conceptos diferentes, pero como muchos conceptos en programación, hay muchas maneras diferentes de lograr la misma tarea. Incluso si los métodos son bastante similares, hay muchas cosas diferentes debajo del capó.


Respuesta 3:

Las otras respuestas son correctas, ya que Curry y Closures son dos conceptos diferentes. Sin embargo, están relacionados en el sentido de que ambos pueden usarse para lograr algunas de las mismas cosas.

Tome por ejemplo el siguiente cierre para realizar la misma funcionalidad que la aplicación parcial

const makeAdder (x) {
return (y) => {
devolver x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Esto a menudo se logra con curry así (usando ramda.js)

const makeAdder = (x, y) => {
 devolver x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Entonces, sí, los dos son conceptos diferentes, pero como muchos conceptos en programación, hay muchas maneras diferentes de lograr la misma tarea. Incluso si los métodos son bastante similares, hay muchas cosas diferentes debajo del capó.


Respuesta 4:

Las otras respuestas son correctas, ya que Curry y Closures son dos conceptos diferentes. Sin embargo, están relacionados en el sentido de que ambos pueden usarse para lograr algunas de las mismas cosas.

Tome por ejemplo el siguiente cierre para realizar la misma funcionalidad que la aplicación parcial

const makeAdder (x) {
return (y) => {
devolver x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Esto a menudo se logra con curry así (usando ramda.js)

const makeAdder = (x, y) => {
 devolver x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Entonces, sí, los dos son conceptos diferentes, pero como muchos conceptos en programación, hay muchas maneras diferentes de lograr la misma tarea. Incluso si los métodos son bastante similares, hay muchas cosas diferentes debajo del capó.