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

Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

15D
3H
21M
16S

Funciones como ciudadanos de primera clase

3/39
Recursos

Aportes 24

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

  • 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.

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

Funciones como ciudadanos de primera clase

Decir que las funciones son ciudadanos de primera clase significa que son reconocidas naturalmente por Java, y se pueden definir y utilizar tal como se har铆a con otros tipos de datos (como los int o String), esto implica que pueden:

  • Definirlas como variables (de tipo funci贸n).
  • Asignarles un valor.
  • Pasarlas como par谩metro a otras funciones.
  • Devolverlas como resultado de una funci贸n.
  • Definirlas a demanda (sin asignarlas a variables), por ejemplo al pasarla por par谩metro persona.modificarEdad(x -> x + 1)

Definirlas a demanda como en el 煤ltimo caso es 煤til cuando no se necesita el mismo c谩lculo todas las veces y hay tantas variantes que en lugar de definir una funcion para cada caso, es mejor tener una sola funci贸n que reciba y ejecute el c谩lculo necesario par谩metro.

Claro y conciso. No como el somn铆fero de Anah铆.

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

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.

Un ciudadano de primera clase con aquellos que pueden ser asignados a variables, pasados como argumentos, o retornados de otra funcion.

Yo definir铆a a un ciudadano de primera clase como a todas aquellas entidades que pueden ser tratadas como cualquier otra variable.

First-class citizen refers to entities that can be treated like any other value in the language. They can be passed around as arguments, stored in variables, and returned from other functions.

Un Objeto debe ser un ciudadano de primera clase

explica muy bien profe

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.