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

¿Qué es una función en Java?

2/39
Recursos
Transcripción

Aportes 33

Preguntas 2

Ordenar por:

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

Que agradable sujeto…

  • En la programación funcional una función es un tipo de dato que opera sobre un dato X y genera un dato Y.

  • Una función es una serie de pasos parametrizados. Las funciones pueden generar o no un resultado.

  • Las funciones se definen, almacenan o declaran bajo demanda como cualquier otro tipo de dato.

  • Pueden definirse funciones con respecto a otras funciones
    esPar(x) = !esNon(x).

  • Pueden definirse funciones con respecto a sí mismas (Recursividad).

  • Pueden existir funciones que toman a otras funciones como parámetros:
    f(x, g(x)) = x2 * (gx)

Definición de la prepa de una función:
En matemáticas, una función f es una relación entre un conjunto dado X (el dominio) y otro conjunto de elementos Y (el codominio) de forma que a cada elemento x del dominio le corresponde un único elemento del codominio f(x). Se denota por:

una función es un tipo de dato

¿Qué es una función en Java?

En la programación funcional, una función es un tipo de dato que a partir de un dato de entrada $x$, puede efectuar alguna operación y devolver un dato $y$.

Otra definición posible es que una función es una serie específica de pasos o instrucciones que puede o no devolver un resultado (no devolver un resultado no implica que no se haya hecho algo útil dentro de la misma).

En cualquier caso, una o más funciones pueden ser definidas en cualquier momento y almacenarse para utilizarlas más de una vez sin reescribirla.

Un ejemplo de función podría ser $f(x) = x^2 * 5$, que en Java puede escribirse como:

public double f(double x) {
    return Math.pow(x, 2) + 5;
}

También es posible definir funciones que hacen uso de otras funciones, por ejemplo $esImpar(x) = !esPar(x)$

public int esPar(int x) {
    return x % 2 == 0;
}

public int esImpar(int x) {
    return !esPar(x);
}

Existen casos donde una función se utiliza a si misma como un paso en la resolución del problema, esto se llama recursión (la función es recursiva).

$$
\begin{align*}
fact(x) =& 1 \iff x \lt 2 \
& x * fact(x - 1) \iff x \ge 2 \
\end{align*}
$$

public int factorial(int x) {
    if (x < 2) return 1;
    return x * factorial(x - 1);
}

Dado que por su definición las funciones son un tipo de dato, es posible tener una función que reciba otra función como uno de sus parámetros.

$$
\begin{align*}
g(x) &= x - 2 \
f(x, g(x)) &= x^2 + g(x) \
\end{align*}
$$

De las mas complejas que recuerdo en mi carrera diría que las funciones vectoriales son alguna de las mas difíciles, ya que son funciones parametricas de 3 ejes y cada componente depende de una variable independiente:

Muchas gracias por la clase instructor Sinuhé, es interesante las utilidades que se pueden dar a las funciones al utilizar la recursividad o establecerlas como parámetros de otras funciones.

Pensé que solo los políticos dicen cosas como: “la ausencia de un resultado no quiere decir que no halla un resultado como tal, es simplemente que el tipo de dato que regresa es un dato vacío.”

En programación funcional un programa es un conjunto de funciones matemáticas que convierten unas entradas en unas salidas, sin ningún estado interno y ningún efecto lateral.

Super!

😮

Espero que este curso me ayude a desenredar mi cabeza a como me la dejó Anahí…

Las funciones son un conjunto de líneas de código (instrucciones), encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente retornan un valor, en el cual se recibe una entrda X y se devuelve un salida Y.

Les invito a mi charla sobre cómo manejar efectos secundarios en programación funcional con efectos algebraicos =)
https://www.meetup.com/es/Quito-Lambda-Meetup/events/mscxlpybchbkc/?fbclid=IwAR3bDlxMG-_9vIFtMwdOTnNVmFC7AgGarNEOKj73-E6galZ0D5cavXWj8WU

O_O interesante se ve bien 😃

Es interesante cómo toda la vida me enseñaron aquí en Platzi pero en otros lenguajes, que las funciones son bloques de código con un objetivo en específico. En este caso es lo mismo, solo que el profe dijo que las funciones son tipos de datos…WTF

A function in programming is a block of organized, reusable code that is used to perform a single, related action. Functions can be called and reused multiple times, which can help to improve the modularity and readability of your code.

The definition of a function in programming is similar to the definition of a function in mathematics, but there are some important differences. In programming, a function is not just a mathematical relation between a set of inputs and a set of outputs. It is also a piece of code that can be executed.

public class Factorial {

  public static int factorial(int n) {
    if (n == 0) {
      return 1;
    } else {
      return n * factorial(n - 1);
    }
  }

  public static void main(String[] args) {
    int result = factorial(5);
    System.out.println(result);
  }
}

¿Qué es una función?

Es un tipo de dato que toma un dato “x” y genera un dato “y”, también es una serie de pasos parametrizados, puede devolver o no un resultado.
Se puede definir, almacenar o declarar bajo demanda (como cualquier otro tipo)

Bueno, en programación de computadoras digitales una función se puede considerar como un tipo de dato y ciertamente se almacena en memoria como un conjunto de instrucciones, que a la final son números binarios. Sin embargo, en matemáticas, una función es un tipo especial de relación, en específico las siguientes propiedades:

  1. Una función debe ser unívoca: Si f(x) = y1 y f(x) = y2, entonces y1 = y2.
  2. Una función debe cumplir la propiedad de totalidad en su dominio, es decir, para todo x perteneciente a D (donde D es el dominio de la función), existe un y perteneciente a C tal que f(x) = y (donde C es el codominio de la función).

Creo que algo que resume todo lo que es una función en programación es:

Una función es una operación que ejecuta una seria de instrucciones con el objetico de cumplir una tarea asignada.

Genial! No tenia pensado que se podian definir funciones que toman otras funciones como parametros, Son cosas que mejoran la productividad sin duda!

¿QUE ES UNA FUNCION?

Yo no conocía funciones en la primaria xd.

excelente vamos con toda

en la progrmacion funcional es un tipo de dato que puede operar es un X y genera una Y

yo entendiendo funciones 你好

Genial.

No se si es el video o es mi computadora, pero por ratos se pierde el audio, es menos de un segundo pero sí siento ese detalle como si se cortara el video. ¿a alguien más le pasa o solo soy yo?

Genial!

Genial, es un concepto que hemos manejado muchas veces y lo hemos usado mucho en la programación, ahora toca aprender como nos puede ayudar a mejorar este paradigma.

¿Qué es una función?
Una función es un tipo de dato que puede operar sobre una dato x y genera un valor y.
Igualmente, por cada x siempre genera una y. También es:

  • Serie de pasos parametrizados

  • Puede o no devolver un resultado

  • Se puede definir, almacenar o declarar bajo demanda (cómo cualquier otro tipo)

  • Podemos definir funciones con respecto a otras funciones (recursividad)

  • Podemos definir funciones que tomen a otras funciones como parámetros

me cae bien el vato creo que voy a aprender