Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Functional Programming

Functional Programming

Jhon Jairo Castillo

October 08, 2021
Tweet

Other Decks in Programming

Transcript

  1. Que es la programación funcional ?  Es un paradigma

    de programación basado en el uso de funciones matemáticas,  Los lenguajes de PF son aquellos lenguajes donde las VAR no tienen estado (inmutables).  Los programas se estructuran componiendo expresiones que evalúan como funciones. Lenguaje Imperativo Lenguaje Funcional Java 8 Lenguaje Hibrido No hay tipos de datos en la Programación funcional, sin embargo en JAVA se aplicara la inferencia de tipos (trabajo del motor). Hi
  2. Ahora. Que es una interfaz funcional ?  La interfaz

    funcional funge principalmente para permitir el paso de funciones a métodos, esto en pocas palabras, concluye que podemos pasar una implementación de una función como argumento (parámetro) de un método.  La interfaz funcional nos va a permitir simular que pasamos una función implementada como argumento de un método. My name is Coon
  3. Como se crea una interfaz funcional ?  Para que

    una interfaz sea funcional debe cumplir con un solo requisito: Solo debe tener un método abstracto.  La interfaz funcional puede tener varios métodos estáticos y default si quiere, pero solo un método abstracto.  Es posible para nosotros crear nuestras propias interfaces funcionales, sin embargo, la versión 8 de Java ha incluido una gran cantidad de estas interfaces dentro del paquete java.util.function. I am here
  4. Características de las Interfaces Funcionales en Java 8  Una

    interfaz puede tener cualquier cantidad de métodos implementados siempre y cuando sean declarados como default.  Las interfaces pueden tener métodos estáticos implementados. To teach you
  5. Hablemos de Expresiones LAMBDA  Una expresión lambda es esencialmente

    una función sin nombre, que tiene un cuerpo de función y puede o no recibir parámetros.  En Java, una expresión lambda siempre va a representar el método abstracto de una interfaz funcional.  La expresión lambda va a separar su lista de parámetros de su cuerpo de función por medio del operador flecha -> Functional Interfaces
  6. Interfaces funcionales Java 8 Java.util.function  Function<T,R>  BiFunction<T,U,R> 

    Predicate<T>  BiPredicate<T,U>  Consumer<T>  BiConsumer<T,U>  Supplier<T>  UnaryOperator<T>  BinaryOperator<T>  Comparator<T> Let’s do this !
  7. Function<T,R> Donde T es un genérico que indica el tipo

    de entrada(Input) de la función Donde R es un genérico que indica el tipo de respuesta de la función.  Representa un función que acepta un argumento y produce un resultado. https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html apply(T t) Applies this function to the given argument.
  8. Function<T,R> Donde T es un genérico que indica el tipo

    de entrada(Input) de la función Donde R es un genérico que indica el tipo de respuesta de la función.  Representa un función que acepta un argumento y produce un resultado. https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html
  9.  Representa una función que acepta dos argumentos y produce

    un resultado. Ésta es la especialización de dos aridades de Function. https://docs.oracle.com/javase/8/docs/api/java/util/function/BiFunction.htm BiFunction<T,U,R > Donde T es un genérico que indica el tipo de entrada(Input) de la función Donde U es un genérico que indica el tipo de entrada(Input) de la función Donde R es un genérico que indica el tipo de respuesta de la función.
  10.  Representa un predicado (función con valor booleano) de un

    argumento. https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html Predicate<T> Donde T es un genérico que indica el tipo de entrada(Input) del predicado test(T t) Evaluates this predicate on the given argument.
  11.  Representa un predicado (función con valor booleano) de un

    argumento. https://docs.oracle.com/javase/8/docs/api/java/util/function/BiPredicate.ht BiPredicate<T,U> Donde T es un genérico que indica el primer tipo de entrada(Input) del predicado Donde U es un genérico que indica el segundo tipo de entrada(Input) del predicado or(BiPredicate<? super T,? super U> other) Returns a composed predicate that represents a short- circuiting logical OR of this predicate and another.
  12.  Representa una operación que acepta un único argumento de

    entrada y no devuelve ningún resultado. A diferencia de la mayoría de las otras interfaces funcionales, se espera que Consumer opere a través de efectos secundarios. https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html Consumer<T> Donde T es un genérico que indica el tipo de entrada(Input) de la operación. accept(T t) Performs this operation on the given argument. andThen(Consumer<? super T> after) Returns a composed Consumer that performs, in sequence, this operation followed by the after operation.
  13.  Representa una operación que acepta dos argumentos de entrada

    y no devuelve ningún resultado. Esta es la especialización de dos aridades de Consumer. A diferencia de la mayoría de las otras interfaces funcionales, se espera que BiConsumer opere a través de efectos secundarios. https://docs.oracle.com/javase/8/docs/api/java/util/function/BiConsumer.html BiConsumer<T,U> Donde T es un genérico que indica el primer tipo de entrada(Input) de la operación. Donde U es un genérico que indica el segundo tipo de entrada(Input) de la operación.
  14.  La interfaz supplier representa un proveedor de recursos. https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html

    Supplier<T> Donde T es un genérico que indica el primer tipo de entrada(Input) de la operación. This is a functional interface whose functional method is get().
  15.  Representa una operación en un solo operando que produce

    un resultado del mismo tipo que su operando. Esta es una especialización de Function para el caso en el que el operando y el resultado son del mismo tipo. https://docs.oracle.com/javase/8/docs/api/java/util/function/UnaryOperator.html UnaryOperator<T> Donde T es un genérico que indica la entrada y salida de la función
  16.  Representa una operación sobre dos operandos del mismo tipo,

    produciendo un resultado del mismo tipo que los operandos. Esta es una especialización de BiFunction para el caso donde los operandos y el resultado son todos del mismo tipo. https://docs.oracle.com/javase/8/docs/api/java/util/function/BinaryOperator.html BinaryOperator<T> Donde T es un genérico que indica la entrada y salida de la función minBy(Comparator<? super T> comparator) Returns a BinaryOperator which returns the lesser of two elements according to the specified Comparator. maxBy(Comparator<? super T> comparator) Returns a BinaryOperator which returns the greater of two elements according to the specified Comparator.
  17.  Permite nos permite realizar comparaciones para poder hacer ordenación

    de elementos de una colección. Ordenación personalizada en este caso. https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html Comparator<T> Donde T es un genérico que indica la entrada y salida de la función comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator) Accepts a function that extracts a sort key from a type T, and returns a Comparator<T> that compares by that sort key using the specified Comparator.