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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
12 Hrs
17 Min
57 Seg

Funciones puras

4/39
Recursos

Aportes 19

Preguntas 2

Ordenar por:

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

  • Función pura: determinista (resultado predecible). Fácil de probar. Su resultado será siempre el mismo al recibir siempre los mismos parámetros. No dependen del contexto, siempre generará el mismo resultado y no generará efectos secundarios, es decir no afectará datos de entrada ni otros datos relativos a otros flujos de datos. No dependen del estado del sistema.

  • Función impura: no determinista. Dependen del estado del sistema. Dependen de su contexto. Pueden generar efectos secundarios, es decir, pueden afectar a otros flujos de datos o verse afectadas por otros flujos de datos subyacentes. No son predecibles.

  • Una función pura puede invocar a una función pura, pero no a una impura. Si una función pura invoca a una impura se transformará entonces en una función impura ya que la naturaleza de la impura hará impredecible el resultado de la función pura, ya sea por resultado o por los efectos secundarios y contexto que impliquen la función pura.

Siempre es bueno explicar la teoria antes de entrar a la practica, Genial.

Ejemplo función pura vs impura:

// impura
var minimo = 18;
var checarEdad = function(edad) {
return edad >= minimo;
};
// pura
var checarEdad = function(edad) {
var minimo = 18;
return edad >= minimo;
};
En la impura, la var_mininmo es global, por lo tanto su estado puede cambiar(mutable), una misma entrada podría dar resultados distintos, dependiendo de su estado.

Fuente:https://sg.com.mx/revista/49/pura-felicidad-funciones-puras

Recomiendo visitar este blog.

Profe Sinuhé Jaime Valencia que buen curso necesitamos mas cursos asi de bien explicados super me encanta este tema

Un funcion pura siempre genera el mismo resultado para el mismo parametro

Funciones puras e impuras

Las funciones pueden categorizarse según diferentes criterioss, permitiendo definir tipos de funciones.

Para que una función se considere pura debe cumplir con los siguientes criterios:

  • Dado una misma entrada, debe devolver siempre el mismo resultado, por ejemplo suma(1, 2) siempre será 3.
  • Funciona en aislamiento: No depende del estado del estado actual del sistema (archivos, registros en la base de datos, día del mes, etc).
  • Son deterministas: El resultado es predecible (esto facilita el testing).
  • No modifica el valor de los parámetros (si se pasó x = 3 como parámetro, luego de ejecutar la función x seguirá valiendo 3).
  • No genera efectos secundarios: No cambia el estado del sistema (no modifica archivos, base de datos ni estado de objetos en memoria).
  • Si llama a otras funciones, éstas también deben ser puras.

Las funciones que no cumplan alguna de estas características (que no sean puras) se las considerará impuras.

las funciones pura son deterministica y tiene aislamiento

Excelente explicación instructor Sinuhé, pensando en los proyectos que he realizado creo que solo he manejado funciones puras ya que prácticamente todas han sido deterministas y estoy ansioso de ver una función impura en acción para comprender mejor estas diferencias.

In Java, a pure function is a function that has the following two properties:

  • The return value of the function depends only on the input parameters passed to the function.

  • The execution of the function has no side effects.

Yo cuando veo una funcion en la que no puedo predecir su comportamiento:

Esto significa que es idempotente ls funcion pura?
o este termino no aplica para esteos casos?

y si X= -3, entonces daria -27, ya no seria pura la función, o si?

Funciones puras

Generan el mismo resultado para los mismos parámetros, además no dependen del estado del sistemas, podemos predecir el resultado de la función pura es decir son deterministas.

FUNCIONES PURAS
-Retornan el mismo valor al pasarles el mismo parámetro.
-No dependen del contexto.
-Son deterministas
-No generan efectos secundarios
-NO puede invocar una funcion impura.

Las funciones puras no tienen dependencias de funciones impuras ya que dejarían de ser puras , por lo que no tendrían resultados predecibles

Muy Buena Explicacion

Las funciones puras son aquellas cuyo comportamiento siempre sera predecible, no dependen de variables ajenas a ella y cuyo resultado bajo los mismos parámetros deben ser siempre iguales, ejemplo de ello la función de suma o exponencial. Caso contrario las funciones impuras son aquellas cuyo comportamiento depende de factores o variables ajenas a ella y cuyo resultado no siempre es predecible (o no de manera simple).

Funciones Puras e Impuras… Entendido 😃 gracias!