@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/