Función = Tiene un nombre.
Lambda = Función que no tiene un nombre.
Por qué usar lambdas?
Es un comportamiento único.
Es una regla que solo se requiere en un lugar.
Es una función muy simple (1 línea).
Introducción a la programación Funcional
¿Qué es la Programación Funcional?
Entendiendo las partes de la programación funcional
¿Qué es una función en Java?
Funciones como ciudadanos de primera clase
Funciones puras
Entendiendo los efectos secundarios
Funciones de orden mayor
Funciones lambda
Inmutabilidad
Functional Programming en Java
Repositorio del curso
Configuración del entorno de trabajo
Revisando el paquete java.util.function: Function
Revisando el paquete java.util.function: Predicate
Revisando el paquete java.util.function: Consumer y Supplier
Revisando el paquete java.util.function: Operators y BiFunction
Entendiendo dos jugadores clave: SAM y FunctionalInterface
Operador de Referencia
Analizando la inferencia de tipos
Comprendiendo la sintaxis de las funciones lambda
Usando metodos default en nuestras interfaces
Dándole nombre a un viejo amigo: Chaining
Entendiendo la composición de funciones
Optional y Streams: Datos mas interesantes
La clase Optional
Entendiendo los Streams
¿Qué son los Stream listeners?
Operaciones y Collectors
Streams de tipo específico y Paralelismo
Operaciones Terminales
Operaciones Intermedias
Collectors
Todo junto: Proyecto Job-search
job-search: Un proyecto para encontrar trabajo
Vista rápida a un proyecto de Gradle
Revisando las opciones para nuestro CLI
Librerías adicionales para nuestro proyecto
Entendiendo la API de jobs
Diseñando las Funciones Constructoras de nuestro Proyecto
Agregando validaciones de datos
Diseñando las funciones de transformacion de datos
Creando flujos extras de transformación de Datos
Conclusiones
Un repaso a lo aprendido
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Las Landas son un concepto que ha ganado prominencia en el desarrollo de software, particularmente en programación funcional. Al hablar de programacion funcional en Java, las Landas son uno de los elementos más conocidos. Pero, ¿qué son exactamente y cómo se usan? Las Landas en Java son funciones anónimas. Es decir, son esas pequeñas funciones que no tienen un nombre explícito. Esta simplicidad les otorga un papel crucial en ciertos contextos.
El concepto de Lambda proviene del cálculo Lambda, un sistema descrito en la década de los 1930 por el matemático Alonzo Church. Este cálculo originalmente proponía que se pueden obtener resultados a través de funciones anónimas. Aunque el cálculo Lambda en sí es una teoría bastante compleja, la esencia es clara: proporciona una manera de trabajar con funciones sin nombre, permitiendo obtener resultados de manera eficiente y sencilla.
Usar una Landa tiene sus ventajas precisamente por su naturaleza anónima:
Para entender mejor, comparemos una función normal y una Landa en Java:
// Función tradicional
Function<Integer, Integer> cuadrado = x -> x * x;
// Función anónima o Landa
(int x) -> x * x
En el ejemplo, la primera función cuadrado
tiene un nombre explícito. Sin embargo, la segunda es una expresión Landa: concisa y sin nombre pero igualmente funcional.
Sí, aunque sean denominadas Landas, siguen siendo funciones. En programación, una función es simplemente un bloque de código que realiza una tarea específica. Así que, aunque las llamemos Landas por su estructura y características, cumplen la misma función esencial que cualquier otra función nombrada en el código.
Aquí mostramos cómo aplicar una Landa en un contexto de Java:
// Función que recibe otra función
public void calcularPromedio(Function<Integer, Integer> funcion) {
int resultado = funcion.apply(5);
System.out.println("El resultado es: " + resultado);
}
// Llamada que pasa una Landa
calcularPromedio((valor) -> valor + 10);
En el ejemplo anterior, la función calcularPromedio
recibe una Landa como argumento, demostrando que una Landa puede integrarse perfectamente en la lógica de programación de funciones en Java.
En resumen, las Landas ofrecen una forma poderosa y eficiente de operar con funciones temporales y específicas, mejorando la legibilidad y simplicidad del código. La clave es entender su rol dentro del espectro de funciones en Java y aprovechar su uso en contextos específicos que demanden un enfoque conciso y directo.
Aportes 24
Preguntas 1
Función = Tiene un nombre.
Lambda = Función que no tiene un nombre.
Por qué usar lambdas?
Es un comportamiento único.
Es una regla que solo se requiere en un lugar.
Es una función muy simple (1 línea).
Uno cuando escucha lambda hasta se asusta pero todo bien
La mejor explicación que he visto sobre las lambdas
Las funciones lambda ($\lambda$) tienen su origen en el cálculo lambda creado por Alonzo Church en la década de los años 30’s, donde (de forma simplificada) proponía que era posible obtener un resultado a partir de funciones anónimas.
⠀
Por lo tanto, una función Lambda es una función anónima, es decir, una función que no posee un nombre. Por ejemplo:
Function foo = ...
: foo
no es anónima.int foo(int x) {...}
foo
no es anónima.x -> ...
: Sí es una función anónimaAlgunas de las utilidades de las funciones anónimas son:
Muy bien, entonces las funciones lambdas se nos presentan sin nombre en comparación al otro tipo de funciones, tienen una estructura más sencilla y su principal uso es para momentos particulares de la aplicación. Muchas gracias por la explicación instructor Sinuhé.
cómo es posible que una función tenga menos de 1 linea? 🤔
Es importante usar lambdas cuando la función es específica de un sólo uso, ya que también ahorras espacio en memoria, y proceso de garbage collect, ya que registrar la función para un solo uso, ocupa memoria en la variable (el nombre de la función) y una vez que finaliza el bloque del programa donde está la función, el garbage collector debe limpiar ese espacio en memoria (o eso me han dicho 😃)
Parten de un concepto matemático de los años 30 (Alonzo Church).
Obetener resultados a partir de funciones anónimas.
Son funciones anónimas
¿Por que usarlas?
Es un comportamiento de uso único
Una regla que solo se requiere en un lugar
Es una función extremadamente simple.
Una lambda sigue siendo una función.
“Donde las funciones no tienen nombre/ Where the functions has no name”.
Buen nombre para un tema musical 😀
Las lambdas son parecidos o tiene la misma lógica que los Arraw function de JS???
Llevaba mucho tiempo esperando un curso especializado en programación funcional, con su teoría,
Más aún en Java,
Muy interesante … como bien se menciona en Javascript es muy comun usar lambda, creo que vale la pena mencionar que no se debe confundir con el termino ocupado en lenguajes formales y automatas.
Funciones Lamba
Son funciones anónimas
Es un comportamiento de uso único, una regla que solo requiere de un solo lugar, es una función simple.
Genial, muchas gracias profe 😃
Gracias, genial conocer el concepto de lambda.
no conocía este termino… super… muchas gracias! 😃
Lambda son funciones sin nombre
Interesante!
Las funciones lambda son aquellas que no tienen un nombre definido son usadas para realizar operaciones simples y puntuales en nuestra aplicación y que no son necesarias en otra parte.
Me suena a funciones anonimas
Ahora se viene lo chido !
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?