
Functional JavaScript
Michael Fogus
- Editorial
- O'Reilly
- Año
- 2013
- Páginas
- ~260
- Nivel
- Intermedio
De qué trata
Libro de O'Reilly (2013) en el que Michael Fogus, conocido por su trabajo en Clojure, enseña a programar en JavaScript con estilo funcional usando Underscore.js como base. Está escrito en la época de ES5, antes de las funciones flecha y de los módulos. Se dirige a dos públicos: programadores de JavaScript que quieren aprender técnicas funcionales y programadores funcionales que quieren aprender JavaScript. Conviene manejar ya el lenguaje con soltura; no es un libro para principiantes.
El recorrido va de lo básico a lo avanzado: funciones como unidades de abstracción, funciones de primera clase y programación aplicativa (map, reduce, find, reject, groupBy y otras de Underscore aplicadas a datos con forma de tabla), ámbito léxico y dinámico, y closures. Siguen las funciones de orden superior (repeat, iterateUntil, fnull, validadores de objetos), las funciones que construyen funciones (currying, aplicación parcial y compose, con pre y poscondiciones) y la recursión: recorrido de grafos, clonado profundo, generadores y trampolines para esquivar los límites de la pila. Después vienen la pureza, la inmutabilidad y las políticas para controlar el cambio, la programación basada en flujos con cadenas perezosas, promesas y pipelines, y la programación sin clases mediante mixins. Los apéndices repasan librerías como Underscore-contrib, RxJS, Bilby y allong.es, y lenguajes que compilan a JavaScript: ClojureScript, CoffeeScript, Roy y Elm.
No hay proyectos completos. El libro avanza con muchos ejemplos de código que construyen poco a poco una pequeña biblioteca funcional propia, y el código de cada capítulo está publicado en GitHub. Es uno de los textos de referencia sobre JavaScript funcional y sus ideas siguen vigentes, pero hoy se escribiría con sintaxis ES2015+ y con Lodash o Ramda en lugar de Underscore. Es denso y exige leer con calma, aunque recompensa al lector con una forma más clara y comprobable de diseñar código.
- Programación funcional
- Underscore.js
- Funciones de primera clase
- Programación aplicativa
- Closures
- Funciones de orden superior
- Currying y aplicación parcial
- Composición
- Recursión y trampolines
- Inmutabilidad y pureza
- Mixins
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✗ Sin proyectos

