Skip to content

Instantly share code, notes, and snippets.

@jjhoncv
Last active April 24, 2018 14:49
Show Gist options
  • Save jjhoncv/28ab9817460f3ab94519025aa609d8c2 to your computer and use it in GitHub Desktop.
Save jjhoncv/28ab9817460f3ab94519025aa609d8c2 to your computer and use it in GitHub Desktop.
concepts programming functional javascript

Programacion funcional

Que és?

Programacion funcional es el proceso de creacion de software mediante la composicion de:

  • pure functions (funciones puras)
  • share state (estado compartido)
  • mutable data (datos mutables)
  • side effects (efectos secundarios)

pure functions (funciones puras)

  • Usan la concurrencia confiable
  • Los usan las Apps React + Redux

pero, Qué és una funcion

  • Es un proceso que toma una entrada, llamada argumentos y produce una salida valor de retorno.
  • Hay tipos de funciones como: Mapeo, Procedimientos y E/S.

Mapeo: Produce algunos resultados basados en entradas dadas. Una funcion mapea los valores de entrada a los valores de salida

Mapping: Las funciones puras x dentro tienen un mapeo o mapping, que juega con los valores de entrada o argumentos y devuelve una sola salida. ejm:

Math.max(2, 8, 5) // 8
  • 'Max.max()' toma numeros como argumentos y devuelve el numero mayor.

otro ejem:

Como en las matematicas: math f(x) = 2x, pasemos esto a JS.

const double = x => x * 2

Si hacemos lo siguiente la salida sera 10

console.log(double(5)) //10

O si ingresamos:

console.log(double(2)) // 4
console.log(double(3)) // 6
console.log(double(5)) // 10

Las entradas siempre seran las mismas y siempre tendremos los mismos resultados.

Osea en vez de colocar double(5) podria colocar 10

Esto es cierto porque double() es una funcion pura, pero si double() tiene efectos secundarios, como guardar info en el disco o iniciar sesion por consola No podria reemplazar double(5) por 10 sin cambiar su significado

Entonces, una funcion es pura cuando:

  • Dada la misma entrada, siempre devolvera los mismos resultados.
  • No produce efectos secundarios.

Tips:

  • Una prueba feaciente de que una funcion es impura, es si al llamarla realiza su proposito pero sin usar su valor de retorno.

  • Las funciones puras toman algo de entrada y devuelven algo de salida en funcion de esa entrada.

  • Son bloques reutilizables mas simples

  • Las FP, son las base de la Programacion funcional.

  • Las FP, son independientes al estado externo.

  • Las FP, son extremadamente independientes, faciles de mover, refactorizar y reorganizar en su codigo, haciendo los programas mas flexibles y adapables.

    funciones puras

const highpass = (cutoff, value) => value >= cutoff;

Los mismos valores de entrada, devuelven los mismos valores de salida

highpass(5, 5); // => true
highpass(5, 5); // => true
highpass(5, 5); // => true

Muchos valores de entrada pueden devolver los mismos resultados

highpass(5, 123); // true
highpass(5, 6);   // true
highpass(5, 18);  // true
highpass(5, 1);   // false
highpass(5, 3);   // false
highpass(5, 4);   // false

Una funcion pura no debe depender de ningun estado mutable externo, porque ya no sera determinista, ni referencialmente transparente.

Una función pura no produce efectos secundarios, lo que significa que no puede alterar ningún estado externo.

Inmutabilidad

Los argumentos de los objetos en JS son referencias, lo que significa que si una función fuera a mutar una propiedad en un objeto o parámetro de un array, eso mutaría el estado al que se puede acceder fuera de la función. Las funciones puras no deben mutar el estado externo.

programacion funcional es declarativa en lugar de imperativa El estado de la app fluye a traves de funciones puras.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment