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

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
9 Hrs
31 Min
57 Seg

¿Qué es una función en Java?

2/39
Resources
Transcript

What is a function in functional programming?

In functional programming, functions are a key and fundamental part. But do we really know what a function is in this context? A function is a type of data that operates on another data; usually expressed as f(x) to denote that an input x generates an output y. This concept, which you have probably already encountered in mathematics, refers to the relationship where for every x, a consistent y is generated.

How does a function work?

Functions can be described as a series of detailed steps that are executed sequentially, which may or may not return a result. In the case where no value is returned, it will be interpreted as empty data. In addition, functions can be defined, stored and declared as required.

Practical example

In programming, we can define a function as f(x), which, in this case, could be represented in code as follows:

function f(x) { return x * x;}

This specific function takes a value x, squares it, and returns the result. Thus, for any given x, f(x) always generates a consistent value.

What are recursive functions?

The concept of functions in functional programming goes further. We can define functions in terms of other functions, which is essential in recursive programming. A recursive function is one that calls itself within its own body.

Example of the factorial

A classic example of a recursive function is the calculation of the factorial of a number:

function factorial(n) { if (n <= 2) { return n; } else { return n * factorial(n - 1); }}

Here, the factorial of a number n is defined as n multiplied by the factorial of n-1, continuing the process until a base value is reached, in this case when n is less than or equal to 2.

Can functions take other functions as parameters?

In functional programming, it is common for functions to take other functions as parameters, which allows great flexibility and code reuse.

Example of a high-order function

Let's look at an example where we have a function f(x) that takes another function g(x) as a parameter:

function f(x, g) { return x * x * g(x);}

In this case, g(x) is a function acting on x, and the result of this operation is multiplied by x squared. This approach allows you to combine the behavior of multiple functions.

Practical Tips

As you progress through the functional programming course in Java, consider the following aspects:

  • Clearly and concisely define functions: Make sure your functions are specific and accomplish a precise task to make them easy to understand and maintain.
  • Use of recursive functions: Take advantage of the power of recursive functions to solve problems that present a repetitive structure.
  • Modularity and reuse: Design functions that can be combined, maximizing code reuse and reducing redundancy.

Embarking on the path of functional programming will not only enrich your coding skills, but also provide you with more efficient tools to structure your applications. Keep learning, exploring and sharing your experiences! 🧠✨

Contributions 35

Questions 2

Sort by:

Want to see more contributions, questions and answers from the community?

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

Que curso tan pero tan interesante, llevo programando poco mas de un año con java usando el paradigma de POO. Y ver esto se me hace una vision nueva que me entusiasma!!
## ¿Qué es una función en Java? En la programación funcional una función es un Tipo de dato, que puede operar sobre un dato X y generar un dato Y. También se puede decir que una función es: Una serie de pasos parametrizados. Puede o no devolver un resultado, no significa que no existe un resultado, sino que el resultado devuelto es un dato vacío. Se puede definir, almacenar o declarar bajo demanda, al ser un dato. ```java //Podemos definir funciones con respecto a otras funciones. esPar(x) = !esNon(x); //Podemos definir funciones con respecto a si mismas (recursividad). factorial(x) = if x <= 2 : x else : x * factorial(x-1) //Podemos definir funciones que tomen otras funciones como parámetros. f(x, g(x)) = x^2 * g(x) ```//Podemos definir funciones con respecto a otras funciones. esPar(x) = !esNon(x); //Podemos definir funciones con respecto a si mismas (recursividad). factorial(x) = if x <= 2 : x else : x \* factorial(x-1) //Podemos definir funciones que tomen otras funciones como parámetros. f(x, g(x)) = x^2 \* g(x)
## ¿Qué es una función en Java? En la programación funcional una función es un Tipo de dato, que puede operar sobre un dato X y generar un dato Y. También se puede decir que una función es: Una serie de pasos parametrizados. Puede o no devolver un resultado, no significa que no existe un resultado, sino que el resultado devuelto es un dato vacío. Se puede definir, almacenar o declarar bajo demanda, al ser un dato. `//Podemos definir funciones con respecto a otras funciones.` `esPar(x) = !esNon(x);` `//Podemos definir funciones con respecto a si mismas (recursividad).` `factorial(x) = if x <= 2 : x` ` ``else : x * factorial(x-1)` ` ` ` ``//Podemos definir funciones que tomen otras funciones como parámetros.` ` ``f(x, g(x)) = x^2 * g(x)`

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