Hier ist ein Lisp-Verfahren, das einfach ‚a‘ auf den absoluten Wert von ‚b‘ fügt hinzu:Erste Referenz auf das Objekt JavaScript-Funktion hinter einem Operator
(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
Ich denke, das ist schön, und ich versuche, um die beste Möglichkeit zu finden, dies in JavaScript zu schreiben. Aber mein JavaScript-Code ist nicht schön:
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);
}
Das Hauptproblem ist, dass ich nicht die +
und -
Symbole als Hinweise auf die Funktionen verwenden, können sie wirklich darstellen, wie ich kann mit Lisp. Kann jemand eine etwas elegantere Art, etwas zu tun, oder habe ich eine Sprachgrenze erreicht?
Natürlich, ich kann dies tun:
var aPlusAbsB = function(a,b) {
return a + Math.abs(b);
}
, aber das ist eher ein Gedankenexperiment als eine pragmatische Frage.
Gibt es eine Möglichkeit, einen Verweis auf die Kernfunktionen in der JavaScript-Sprache zu erhalten, als ob sie benutzerdefiniert wären?
Haben Sie sich Functional.js und seine skurril-süße Syntax für die Darstellung einfacher Funktionen als Strings angesehen? – Pointy
Auch ich habe keine Ahnung, ob es tatsächlich Funktionsinstanzen für die eingebauten arithmetischen Operatoren gibt. – Pointy
Ich habe die Funktionale Bibliothek gesehen, und sie sieht cool aus. Ich frage mich nur, ob es einen Weg gibt, dies nur mit Core JS zu tun. Und @ Pointy Ich frage mich das Gleiche. Sie sind möglicherweise keine Function-Objekte, aber dort gibt es eine Logik, die ähnlich wie eine Funktion ausgeführt wird. –