¿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 C# question, pero todavía tengo que encontrar una buena definición y explicación de lo que son en primer lugar.¿Qué es un Lambda?
Respuesta
Los cierres, las lambdas y las 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 las variables que estaban en su alcance léxico cuando se declaró, incluso después de haber caído de de alcance. Las funciones anónimas no necesariamente tienen que ser cierres, pero están en la mayoría de los idiomas y se vuelven bastante 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, un lambda es solo una función anónima. En Python, un lambda es una función anónima específicamente limitada a una sola expresión; algo más, y necesitas una función nombrada. Lambdas son cierres en ambos idiomas.
el término podría estar destinado a implicar el cálculo lambda http://en.wikipedia.org/wiki/Lambda_calculus –
Wow I with I had más de un upvote para dar esta pregunta. He visto tantas respuestas técnicas empantanadas en la terminología, pero esta es conciso y lo señala de inmediato. –
+1 por no usar el término "cerrar" para definir un cierre como si lo hiciera más claro. – Daniel
recortadas 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 que se utiliza para denotar funciones o cierres anónimos, siguiendo el uso de lambda cálculo.
Supongo que se refería a esta línea: en lenguajes de programación como Lisp y Python, lambda es un operador que se utiliza para denotar funciones o cierres anónimos, siguiendo el uso de cálculo lambda. Ya había escaneado el artículo pero me perdí eso. – Fred
Es simplemente una función anónima declarada en línea, asignada típicamente a un delegado cuando no desea escribir una función hecha y derecha.
En lenguajes como lisp/scheme, a menudo se transmiten bastante liberalmente como parámetros de función, pero la expresión en C# típicamente encuentra que lambdas solo se usa para evaluación lenta de funciones, como en linq, o para crear código de gestión de eventos un poco terser
"Lambda" se refiere a Lambda Calculus 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 las funciones, y es la base de functional programming languages.
~ William Riley-Tierra
también llamados cierres o funciones anónimas .. he encontrado la mejor descripción here. Básicamente, bloque de código en línea que se puede pasar como argumento a una función.
No existe realmente nada como 'un lambda' en la programación. Depende del idioma, etc.
En resumen, normalmente un lenguaje que 'tiene lambdas' utiliza el término para funciones anónimas o, en algunos casos, cierres. Como tal, en Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
Respondiendo a las respuestas anteriores:
-Lo importante de las funciones anónimas no es que no requieran un nombre.
- Las uniones son un concepto separado.
-Un artículo gigantesco de wikipedia no lo aclara.
Aquí está mi respuesta en 3 partes:
1.Una lambda es una función que también es una expresión. Esto es lo importante.
2. Muchos lenguajes que implementan las denominadas "lambdas" agregan un azúcar sintáctico para que escribir estas funciones breves sea más fácil y rápido, pero esto no es necesario.
3. Algunos idiomas pueden requerir que una lambda tenga sin 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 idioma. Puedo hacer todas las cosas importantes con él:
x = lambda(){ return "Hello World"; }
doit(1, 2, lambda(a,b){ return a > b; }, 3)
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })(1, 2) //() is valid operator here
- 1. ¿Qué es un lenguaje lambda?
- 2. ¿Qué es "Elevación Lambda"?
- 3. Entrevista: ¿Qué es la expresión lambda?
- 4. ¿Qué es "binding lambda" en Python?
- 5. ¿Es Linq o Lambda?
- 6. ¿Qué significa "Expresión Lambda"?
- 7. ¿Por qué usar # 'con lambda?
- 8. ¿Para qué es la ventana lambda de LinqPad?
- 9. ¿Por qué es param en esta expresión lambda?
- 10. ¿Cuándo es demasiado "acción lambda"?
- 11. ¿Por qué las expresiones lambda se llaman expresiones lambda?
- 12. ¿Es lambda un tipo de función de orden superior?
- 13. ¿De qué tipo de cálculo lambda sería un ejemplo Lisp?
- 14. lambda devuelve lambda en python
- 15. C# Expresiones lambda: ¿Por qué debería usarlas?
- 16. Determine si un parámetro/variable es a ("is_a?") Lambda?
- 17. ¿es posible usar un lambda como valor predeterminado del diccionario?
- 18. ¿De qué sirve lambda en PHP?
- 19. ¿Qué hace el auto lambda: do
- 20. ¿Qué hace el método Lambda Expression Compile()?
- 21. ¿Qué compiladores de C++ ya soportan lambda?
- 22. Lambda que devuelve otra lambda
- 23. ¿Es posible incorporar una expresión lambda?
- 24. ¿Cuál es la nueva sintaxis lambda?
- 25. Expresión Lambda versus Statement Lambda
- 26. ¿Cómo ordenar con un lambda?
- 27. Lambda Expressions
- 28. ¿Qué es un Pagelet?
- 29. ¿Qué es un UUID?
- 30. Qué es un Sandbox
¿Qué tal [lambda cálculo artículo de Wikipedia] (http://en.wikipedia.org/wiki/Lambda_calculus) para un comienzo? Luego [artículo de programación funcional de Wikipedia] (http://en.wikipedia.org/wiki/Functional_programming_language) como seguimiento. – Thorsten79
posible duplicado de [¿Qué es una lambda (función)?] (Http://stackoverflow.com/questions/16501/what-is-a-lambda-function) – nawfal
expresión de amda explicada [aquí] (https: // chaseyourjava .blogspot.in/2017/11/lamda-expression-in-java-8.html) bellamente. –