Skip to content

Portada

Sobre este libro

Este es un libro sobre el paradigma funcional en general. Utilizaremos el lenguaje de programación funcional más popular del mundo: JavaScript. Algunos considerarán esta elección poco apropiada por contracorriente de la cultura imperativa predominante. Sin embargo, creo que es la mejor forma de aprender FP por varias razones:

  • Probablemente lo usas diariamente en el trabajo.

Esto permite practicar y aplicar los conocimientos adquiridos cada día en programas reales, en lugar de proyectos personales en lenguajes FP esotéricos.

  • No necesitamos aprender todo desde el inicio para empezar a escribir programas.

En un lenguaje funcional puro, no puedes registrar una variable ni leer un nodo DOM sin usar mónadas. Aquí podemos «hacer trampa» mientras aprendemos a purificar nuestra base de código. También es más fácil comenzar con este lenguaje al ser multiparadigma, permitiéndote recurrir a tus prácticas actuales cuando haya lagunas en tu conocimiento.

  • El lenguaje es totalmente capaz de escribir código funcional de primera calidad.

Tenemos todas las características necesarias para emular lenguajes como Scala o Haskell con ayuda de una o dos pequeñas librerías. Aunque la programación orientada a objetos domina la industria, resulta claramente incómoda en JavaScript. Es como acampar junto a una autopista o bailar claqué con botas. Debemos usar bind por todas partes para evitar que this cambie inesperadamente, aplicar soluciones a comportamientos erráticos cuando olvidamos la palabra clave new, y acceder a miembros privados únicamente mediante closures. Para muchos de nosotros, la FP simplemente se siente más natural.

Sin duda, los lenguajes funcionales tipados serán el mejor entorno para programar en el estilo presentado en este libro. JavaScript será nuestro medio para aprender el paradigma; dónde aplicarlo dependerá de ti. Afortunadamente, las interfaces son matemáticas y, por tanto, universales. Te sentirás como en casa con Swiftz, Scalaz, Haskell, PureScript y otros entornos con inclinación matemática.

Leer en línea

Para una mejor experiencia de lectura, léelo en línea mediante Gitbook.

  • Barra lateral de acceso rápido
  • Ejercicios en el navegador
  • Ejemplos detallados

Experimenta con el código

Para que el aprendizaje sea eficiente y no te aburras con las explicaciones, asegúrate de experimentar con los conceptos presentados. Algunos pueden ser complejos inicialmente y se comprenden mejor mediante la práctica directa. Todas las funciones y estructuras de datos algebraicas presentadas en el libro están recopiladas en los apéndices. El código correspondiente también está disponible como módulo npm:

bash
$ npm i @mostly-adequate/support

Alternativamente, los ejercicios de cada capítulo son ejecutables y pueden completarse en tu editor. Por ejemplo, completa los archivos exercise_*.js en exercises/ch04 y luego ejecuta:

bash
$ npm run ch04

Descargar

Encuentra PDF y EPUB pregenerados como artefactos de compilación de la última versión.

Hazlo tú mismo

⚠️ La configuración de este proyecto está algo desactualizada y podrías encontrarte con diversos problemas al compilarlo localmente. Recomendamos usar Node v10.22.1 y la última versión de Calibre si es posible.

Sobre la versión de Node.js

Dado que la versión recomendada de Node (v10.22.1) ahora está algo desactualizada, es probable que no la tengas instalada. Puedes instalar múltiples versiones de Node.js usando nvm. Consulta ese proyecto para instalarlo y luego podrás:

  • Instalar cualquier versión necesaria:
nvm install 10.22.1
nvm install 20.2.0
  • Cambiar entre versiones de Node:
nvm use 10.22.1
node -v // will show v10.22.1 
nvm use 20.2.0
node -v // will show v20.2.0

Como este proyecto incluye un archivo .nvmrc, puedes ejecutar nvm install y nvm use sin especificar la versión:

// being anywhere inside this project
nvm install
node -v // will show v10.22.1

Secuencia completa de comandos

Considerando lo anterior sobre tener nvm instalado, aquí está la secuencia completa para generar archivos PDF y EPUB por tu cuenta:

git clone https://github.com/MostlyAdequate/mostly-adequate-guide.git
cd mostly-adequate-guide/
nvm install
npm install
npm run setup
npm run generate-pdf
npm run generate-epub

¡Nota! Para generar la versión electrónica necesitarás instalar ebook-convert. Instrucciones de instalación.

Tabla de contenido

Ver SUMMARY.md

Contribuciones

Ver CONTRIBUTING.md

Traducciones

Ver TRANSLATIONS.md

FAQ

Ver FAQ.md

Planes futuros

  • Parte 1 (capítulos 1-7): fundamentos básicos. Actualizo cuando encuentro errores, ya que es el borrador inicial. ¡Ayuda es bienvenida!
  • Parte 2 (capítulos 8-13): cubre clases de tipos como functores y mónadas hasta estructuras traversable. Espero incluir transformers y una aplicación pura.
  • Parte 3 (capítulos 14+): explora la fina línea entre programación práctica y absurdismo académico. Analizaremos comónadas, f-álgebras, mónadas libres, yoneda y otras construcciones categóricas.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.