lectura a través del artículo de Wikipedia sobre las funciones de primera clase, hay una bonita mesa de soporte de idiomas para los diversos aspectos de la programación funcional: http://en.wikipedia.org/wiki/First-class_function#Language_support¿Admite JavaScript la aplicación de función parcial?
JavaScript está catalogado como no tener aplicación de función parcial. Sin embargo, existen técnicas para crear una función que devuelve una función que con algunos de los parámetros almacenados en un cierre, es decir:
var add = function(a, b){
return a + b;
},
apply = function(fn, a){
return function(b){
return fn(a, b);
}
},
addFive = apply(add, 5);
console.log(addFive(2)); // prints 7
¿Es esta aplicación de función no parcial? De lo contrario, ¿podría alguien proporcionar un ejemplo de aplicación de función parcial en otro idioma y explicar cómo es diferente?
Gracias!
Perdóname, no estoy familiarizado con la sintaxis de Haskell. ¿La firma de la función para 'add' que dice" 'add' toma dos Ints y devuelve un Int"? ¿Esto quiere decir que invocar una función que toma 2 parámetros con solo 1 devuelve implícitamente la función parcialmente aplicada? –
Traducido a Javascript. Sí, en términos simples, 'Int -> Int -> Int 'significa que toma dos' Int' y devuelve uno. Sin embargo, tal vez más correcto, transformará un 'Int' y otro' Int' en otro 'Int'. Real Haskellers todavía tendrá un problema con mi terminología, supongo, pero para el profano esto debería funcionar. : o) – deceze
Supongo que sí - es decir, 'add' actuaría así: http://paste.pocoo.org/show/569340/ – ThiefMaster