6. Programaci´on funcional
Computaci´on = Evaluaci´on de funciones matem´aticas (calculo
de lambdas)
NO cambios en estado
NO mutar datos
Declarativo → Expresiones
8. Java vs. Funcional (Algoritmos)
Java
Imperativo, comportamiento
como una serie de pasos
FP
Declarativo, interacci´on de fun-
ciones sin especificar su contenido
9. Java vs. Funcional (Mutabilidad y estado)
Java
Estado y comportamiento
juntos, promueve mutabilidad
FP
Evita estado, pro-
mueve inmutabilidad
10. Java vs. Funcional (Estilo)
Java
OOP + Patrones para ab-
stracciones de alto nivel
FP
Es una abstracci´on en
alto nivel por si mismo
11. Java vs. Funcional (Concurrencia)
Java
Concurrencia basica con
locks y recursos compartidos
FP
Workflows paralelos sin es-
tado compartido (no locks!)
12. Java vs. Funcional (C´odigo)
Java Descriptivo (demasiado)
FP Conciso y denso
13. Java 8
Un licuado de programaci´on orientada a objetos con azucares
sint´acticas funcionales.
15. Programaci´on funcional en Java 8
Java no es un lenguaje funcional puro (Clojure)
Otras opciones JVM (Scala, Kotlin, Ceylon)
Java soporta programaci´on funcional a trav´es de bibliotecas
16. Bloques funcionales en Java 8
Interfaces funcionales
Referencia a funciones
Lambdas
Funciones predefinidas en Java 8 (java.util.function)
Streams API
17. Interfaces funcionales
Solo un m´etodo abstracto
Interfaces ahora permiten default methods
@FunctionalInterface
public interface Runnable
{
public abstract void Run ();
}
19. Expresion lambda
Funci´on an´onima sin asociar a un identificador
Usadas para pasar comportamiento a funciones high-order
Usadas para construir el resultado de una funci´on high-order
que necesita retornar una funci´on