@NormanPerrinOK

norman.perrin.94@gmail.com

Norman Perrin

Programador freelance "fullstack"

Paradigma

Conceptos y Herramientas

Abstracci贸n

Separar un problema en partes

Declaratividad

No me expliques (muestres) c贸mo

Expresividad

Si no lo entiendo, no sirve

Conceptos funcionales

Transparencia Referencial

agregarComida(comida): void

contexto

sacarComida(): comida

verHeladera(): heladera

Heladera

Programa "cocina"

La funci贸n puede ser reemplazada por su retorno

Transparencia Referencial

agregarComida(heladera,comida): heladera

contexto

sacarComida(heladera, posicion):{comida, heladera}

Programa "cocina"

La funci贸n puede ser reemplazada por su retorno

Inmutabilidad

const mascotaEspecial = { tipo: 'tortuga', 'nombre': 'Martin' }
...
...
...
assert(mascotaEspecial.tipo === 'tortuga') // true
// objeto (ES6)
const nuevoObj = {...obj}

// objeto
const nuevoObj = Object.assign(obj)

// array 
const nuevoArr = arr.slice()

Restricci贸n a la asignaci贸n

Orden superior

const doble = num => num * 2

const mapearDoble = arr => arr.map(doble)

Recibir, ejecutar internamente y devolver una funci贸n

Composici贸n

const compose = (...fns) =>
  fns.reverse().reduce((prevFn, nextFn) =>
    value => nextFn(prevFn(value)),
    value => value
  );

Combinaci贸n de varias funciones para producir una nueva

const doble = num => num * 2
const siguiente = num => num + 1

const mapearDobleDelSiguiente = arr => arr.map( compose(doble, siguiente) )

Muchas gracias!

Preguntas, ideas, comida, slides, blogs...

Nos podemos hablar por ac谩:

@NormanPerrinOK

norman.perrin.94@gmail.com

https://freecodecampba.org/chat/

intro-funcional

By Norman Perrin

intro-funcional

馃暫

  • 442