Ho visto un lambda definito come una funzione anonima e come riferimento a una funzione. Javascript supporta entrambi:
setTimeout(function(){ }, 100)
var f = function(){ }
È qui che JS ottiene molta della sua potenza e flessibilità. Java supporta il primo in una certa misura (implementazioni dell'interfaccia anonima), ma non il secondo - vedi sotto per l'aggiornamento per Java 8.
Non mi è chiaro quale (o entrambi) di questi sia la definizione corretta di lambda.
JS non è sicuramente la prima lingua a supportare queste funzionalità. A partire dalla memoria, penso che sia una parola piccola che gli appassionati di lingue siano sempre entusiasti di supportare i lambda.
BTW: In Java, una classe anonima viene solitamente utilizzata per passare una definizione di classe al volo per un argomento (molto usata in swing). Qualcosa di simile (dalla memoria, non compilato):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
}
}
)
Aggiornare
Java, a partire da 8, è ora ufficialmente un linguaggio Lambda.
È ora possibile utilizzare la seguente sintassi:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Codice sorgente