2. I replaced `currying` by `currificación` and I implemented minor type fixes. 3. I fixed the blockquotes convenientement to javascript rules and comments. 4. I added anchor elements with links to wikipedia (curriying, arity and partial application). P.D.: For partial application, Wikipedia is not the article in spanish version.
3.4 KiB
3.4 KiB
id, title, challengeType, videoUrl, localeTitle
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
587d7dab367417b2b2512b70 | Introduction to Currying and Partial Application | 1 | Introducción a la currificación y aplicación parcial. |
Description
arity
de una función es el número de argumentos que requiere. La currificación Currying
de una función significa convertir una función de N arity
en N funciones de arity
1. En otras palabras, reestructura una función para que tome un argumento, luego devuelva otra función que tome el siguiente argumento, y así sucesivamente. Aquí hay un ejemplo: // Función no curríficadaEsto es útil en su programa si no puede suministrar todos los argumentos a una función al mismo tiempo. Puede guardar cada llamada de función en una variable, que mantendrá la referencia de función devuelta que toma el siguiente argumento cuando esté disponible. Aquí hay un ejemplo que usa la función de
function unCurried(x, y) {
return x + y;
}
// Función currificada
function curried(x) {
return function(y) {
return x + y;
}
}
curried(1)(2) // Devuelve 3
curried
en el ejemplo anterior: // Llamar una función currificada en partes:De manera similar, la aplicación parcial
var funcForY = curried(1);
console.log (funcForY(2)); // Imprime 3
partial application
puede describirse como la aplicación de unos pocos argumentos a una función a la vez y la devolución de otra función que se aplica a más argumentos. Aquí hay un ejemplo: // Función imparcial
function impartial(x, y, z) {
return x + y + z;
}
var partialFn = impartial.bind(this, 1, 2);
partialFn(10); // Devuelve 13
Instructions
add
para que use la currificación para agregar los parámetros x
, y
y z
. Tests
tests:
- text: <code>add(10)(20)(30)</code> debe devolver <code>60</code> .
testString: 'assert(add(10)(20)(30) === 60, "<code>add(10)(20)(30)</code> should return <code>60</code>.");'
- text: <code>add(1)(2)(3)</code> debe devolver <code>6</code> .
testString: 'assert(add(1)(2)(3) === 6, "<code>add(1)(2)(3)</code> should return <code>6</code>.");'
- text: <code>add(11)(22)(33)</code> debe devolver <code>66</code> .
testString: 'assert(add(11)(22)(33) === 66, "<code>add(11)(22)(33)</code> should return <code>66</code>.");'
- text: Su código debe incluir una declaración final que devuelva <code>x + y + z</code> .
testString: 'assert(code.match(/[xyz]\s*?\+\s*?[xyz]\s*?\+\s*?[xyz]/g), "Your code should include a final statement that returns <code>x + y + z</code>.");'
Challenge Seed
function add(x) {
// Add your code below this line
// Add your code above this line
}
add(10)(20)(30);
Solution
// solution required