Aquí es un procedimiento Lisp que simplemente añade 'a' al valor absoluto de la 'b':Conseguir referencia al objeto de función JavaScript detrás de un operador
(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
creo que esto es hermoso, y yo estoy tratando para encontrar la mejor manera de escribir esto en JavaScript. Pero mi código JavaScript no es bello:
var plus = function(a,b) {
return a + b;
};
var minus = function(a,b) {
return a - b;
};
var aPlusAbsB = function(a,b) {
return (b > 0 ? plus : minus)(a,b);
}
El principal problema es que no puedo utilizar los +
y -
símbolos como referencias a las funciones que realmente representan como pueda con Lisp. ¿Alguien puede pensar en una forma más elegante de hacer algo como esto, o he alcanzado un límite de idioma?
Obviamente, no puedo hacer esto:
var aPlusAbsB = function(a,b) {
return a + Math.abs(b);
}
, pero esto es más bien un experimento mental que una cuestión pragmática.
¿Hay alguna manera de que pueda obtener una referencia a las funciones básicas en el lenguaje JavaScript como si estuvieran definidas por el usuario?
¿Has mirado Functional.js y su sintaxis extravagante para representar funciones simples como cadenas? – Pointy
Tampoco tengo idea de si realmente hay instancias de Function en algún sentido real para los operadores aritméticos incorporados. – Pointy
He visto la biblioteca funcional y parece genial. Me pregunto si hay alguna forma de hacer esto usando solo JS básico. Y @Pointy me preguntaba lo mismo. Puede que no sean objetos Function, pero existe una lógica que se ejecuta de forma similar a cómo se ejecuta una función. –