
@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
🕺
- 527