Introducci贸n a la programaci贸n Funcional

1

驴Qu茅 es la Programaci贸n Funcional?

Entendiendo las partes de la programaci贸n funcional

2

驴Qu茅 es una funci贸n en Java?

3

Funciones como ciudadanos de primera clase

4

Funciones puras

5

Entendiendo los efectos secundarios

6

Funciones de orden mayor

7

Funciones lambda

8

Inmutabilidad

Functional Programming en Java

9

Repositorio del curso

10

Configuraci贸n del entorno de trabajo

11

Revisando el paquete java.util.function: Function

12

Revisando el paquete java.util.function: Predicate

13

Revisando el paquete java.util.function: Consumer y Supplier

14

Revisando el paquete java.util.function: Operators y BiFunction

15

Entendiendo dos jugadores clave: SAM y FunctionalInterface

16

Operador de Referencia

17

Analizando la inferencia de tipos

18

Comprendiendo la sintaxis de las funciones lambda

19

Usando metodos default en nuestras interfaces

20

D谩ndole nombre a un viejo amigo: Chaining

21

Entendiendo la composici贸n de funciones

Optional y Streams: Datos mas interesantes

22

La clase Optional

23

Entendiendo los Streams

24

驴Qu茅 son los Stream listeners?

25

Operaciones y Collectors

26

Streams de tipo espec铆fico y Paralelismo

27

Operaciones Terminales

28

Operaciones Intermedias

29

Collectors

Todo junto: Proyecto Job-search

30

job-search: Un proyecto para encontrar trabajo

31

Vista r谩pida a un proyecto de Gradle

32

Revisando las opciones para nuestro CLI

33

Librer铆as adicionales para nuestro proyecto

34

Entendiendo la API de jobs

35

Dise帽ando las Funciones Constructoras de nuestro Proyecto

36

Agregando validaciones de datos

37

Dise帽ando las funciones de transformacion de datos

38

Creando flujos extras de transformaci贸n de Datos

Conclusiones

39

Un repaso a lo aprendido

Funciones como ciudadanos de primera clase

3/39
Recursos
Transcripci贸n

Aportes 17

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

  • Tradicionalmente en Java y cualquier otro lenguaje de programaci贸n que no es naturalmente funcional, las funciones son m茅todos, meros procedimientos que se utilizan para reciclar c谩lculos u operaciones.

  • Cu谩ndo se hace referencia a funciones como ciudadanos de primera clase se hace alusi贸n a las funciones como elementos primordiales del lenguaje. En Java los ciudadanos de primera clase han sido siempre los objetos.

  • Cu谩ndo el profesor hace referencia a funciones como ciudadanos de primera clase se refiere claramente a la capacidad que confiere Java 8 en adelante para tratar las funciones como Tipos de datos, que pueden declararse, recibirse c贸mo par谩metros o enviarse (retornarse) c贸mo resultados.

En programaci贸n, cuando se habla de ciudadanos de primera clase o First-class citizens (o first-class constructs o first-class elements), es para hacer referencia a un elemento del lenguaje que posee la mayor cantidad de privilegios dentro de dicho lenguaje.

A pesar de lo anterior, este no es un t茅rmino bien definido, ya que var铆a por muchos factores, y el principal de ellos es el lenguaje de programaci贸n del cual estemos hablando. Pero hay ciertas caracter铆sticas que generalmente se toman en cuenta para decir si un elemento es de primera clase o no:

Puede ser guardado en variables
Pueden ser usados como argumentos
Pueden ser un valor de retorno
Tienen identidad propia

Es importante se帽alar que si bien 鈥渆xisten鈥 ciudadanos de primera clase, no existen de segunda o tercera. Una cosa es de primera o no lo es.

En java tenemos por ejemplo:
Interfaces
Clases
Structs
tipos de datos primitivos
entre otras cosas

En programaci贸n , un ciudadano de primera clase (tambi茅n tipo , objeto , entidad o valor ) es una entidad que soporta las operaciones que incluyen pasarlas como un argumento, devolverlas de una funci贸n, modificarlas y asignarlas a una variable.

Yo lo veo como que elementos pasan a ser el protagonista en como manipulamos la informaci贸n y como este nos brinda todas las opciones para resolver nuestra problem谩tica, como pasa por ejemplo con las clases.

con practica se entender谩 mejor 馃槂

Entonces ciudadano de primera clase se refiera aquel elemento que pasa a ser parte del lenguaje de programaci贸n, como vimos al principio que las funciones fueron usadas para declarar una variable similar a un string.

No me queda muy claro lo de considerar las funciones como 鈥渃iudadanos de primera clase鈥

Se considera un ciudadano de primera clase cuando las funciones son tratadas como cualquier otro valor. En Java, por ser un lenguaje de programaci贸n orientado a objetos, los objetos son ciudadanos de primera clase, los tipos de datos primitivos tambi茅n lo son. Igualmente, podemos incluir las interfaces, los constructores, entre otros.

Se considera un ciudadano de primera clase cuando las funciones son tratadas como cualquier otro valor.

todo aquel tipo de dato o objeto con el que se puede realizar operaciones o retornos en java, serian ciudadanos de primera clase

Las clases an贸nimas se considerar铆an como ciudadanos de primera clase? :pen

Ciudadanos de primera clase
Tipos reconocidos por el lenguaje, considero que es todo lo contemplado en la API de java a excepcion de las abstracciones que creamos a partir de ellas.

Ciudadano de primera clase es cuando se pueden almacenar en variables, pasar como par谩metro y devolver desde funciones, sin ning煤n tratamiento especial. El ejemplo m谩s claro en un lenguaje popular lo encontramos en JavaScript, donde estas operaciones con funciones son muy comunes

Genial.

Retomando: ciudadano de primera clase se refiere a usar las funciones como un tipo de variables.

function myfunction;

Eso entend铆, pero agrego que ciudadano de primera clase tambi茅n se refiere a poder invocar funciones sin necesidadad de estar vinculada a una variable.

public int sumar(){}

sumar();

Lo que entiendo es que pueden tener tratamineto como cualquier otro valor, pueden almacenar, servir como par谩metro y retornar funciones, pueden tomar una o m谩s funciones como entrada y devolver una funci贸n como salida.

En Java al iniciar como un lenguaje de programaci贸n orientado a objetos, los objetos son ciudadanos de primera clase, los tipos de dato primitivos como int, long, boolean, char, por mencionar algunos. Las interfaces, las clases, los arreglos, las anotaciones (annotations) tambi茅n son ciudadanos de primera clase en Java.