¿Alguien podría proporcionar una buena descripción de lo que es un Lambda? Tenemos una etiqueta para ellos y están en los secretos de la pregunta C #, pero todavía tengo que encontrar una buena definición y explicación de lo que son en primer lugar.
93
Respuestas:
Los cierres, lambdas y funciones anónimas no son necesariamente lo mismo.
Una función anónima es cualquier función que no tiene (o, al menos, necesita) su propio nombre.
Un cierre es una función que puede acceder a variables que estaban en su alcance léxico cuando fue declarada, incluso después de que hayan caído fuera de alcance. Las funciones anónimas no tienen por qué ser cierres, pero están en la mayoría de los idiomas y se vuelven menos útiles cuando no lo son.
Una lambda no está tan bien definida en lo que respecta a la informática. Muchos idiomas ni siquiera usan el término; en su lugar, simplemente los llamarán cierres o funciones anónimas o inventarán su propia terminología. En LISP, una lambda es solo una función anónima. En Python, una lambda es una función anónima limitada específicamente a una sola expresión; algo más, y necesita una función con nombre. Las lambdas son cierres en ambos idiomas.
fuente
También llamados cierres o funciones anónimas ... Encontré la mejor descripción aquí . Básicamente, bloque de código en línea que se puede pasar como argumento a una función.
fuente
"Lambda" se refiere al cálculo de Lambda oa una expresión lambda específica. El cálculo lambda es básicamente una rama de la lógica y las matemáticas que se ocupa de funciones y es la base de los lenguajes de programación funcionales .
~ William Riley-Land
fuente
Es solo una función anónima declarada en línea, generalmente asignada a un delegado cuando no desea escribir una función completa.
En lenguajes como lisp / esquema, a menudo se pasan de manera bastante generosa como parámetros de función, pero el idioma en C # generalmente encuentra lambdas que se usan solo para la evaluación perezosa de funciones, como en linq, o para hacer que el código de manejo de eventos sea un poco más terso.
fuente
Realmente no existe tal cosa como 'lambda' en programación. Depende del idioma, etc.
En resumen, normalmente un lenguaje que 'tiene lambdas' usa el término para funciones anónimas o, en algunos casos, cierres. Así, en Ruby:
fuente
En respuesta a las respuestas anteriores:
-Lo importante de las funciones anónimas no es que no requieran un nombre.
-Los cierres son un concepto aparte.
-Un artículo gigantesco de Wikipedia no aclara esto.
Aquí está mi respuesta en 3 partes:
1. Una lambda es una función que también es una expresión. Eso es lo importante.
2. Muchos lenguajes que implementan las llamadas "lambdas" agregan algo de azúcar sintáctico para hacer que escribir estas funciones cortas sea más fácil y rápido, pero esto no es necesario.
3. Algunos idiomas pueden requerir que una lambda no tenga efectos secundarios . Esa sería una lambda más pura en el sentido funcional.
Cuando una función es una expresión, es un "ciudadano de primera clase" dentro del lenguaje. Puedo hacer todas las cosas importantes con él:
fuente
Recortado de wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
En lenguajes de programación como Lisp y Python, lambda es un operador utilizado para denotar funciones o cierres anónimos, siguiendo el uso del cálculo lambda.
fuente