He visto una lambda definida como una función anónima y como una referencia a una función. Javascript es compatible con ambos:
setTimeout(function(){ }, 100)
var f = function(){ }
Aquí es donde JS obtiene gran parte de su poder y flexibilidad. Java es compatible con la primera hasta cierto punto (implementaciones de interfaz anónimas), pero no con la última ; consulte a continuación la actualización para Java 8.
No me queda claro cuál (o ambos) de estos es la definición adecuada de una lambda.
Definitivamente JS no es el primer idioma que admite estas funciones. De memoria, creo que es una pequeña charla que los entusiastas del lenguaje siempre se entusiasman con el apoyo de lambdas.
Por cierto: en Java, una clase anónima se usa generalmente para pasar una definición de clase sobre la marcha para un argumento (se usa mucho en swing). Algo como esto (de memoria, no compilado):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
}
}
)
Actualizar
Java, a partir del 8, ahora es oficialmente un lenguaje Lambda.
Ahora puede utilizar la siguiente sintaxis:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Fuente de código