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

Funciones como ciudadanos de primera clase

3/39
Recursos

Aportes 25

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • 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 “existen” 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.

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.

con practica se entenderá mejor 😃

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

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.

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

Las clases anónimas se considerarían como ciudadanos de primera clase? :pen

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 “ciudadanos 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.

Yo consideraría ciudadanos de primera clase a: objetos, clases, tipos de datos primitivos, interfaces, entre otros.

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.