
Functional Design and Architecture
Alexander Granin
- Editorial
- Manning
- Año
- 2024
- Páginas
- ~684
- Nivel
- Intermedio
De qué trata
Obra avanzada de Alexander Granin publicada por Manning en 2024 que traslada los principios del diseño y la arquitectura de software empresarial al paradigma de la programación funcional moderna, utilizando Haskell como lenguaje principal. Está pensada para desarrolladores de software, ingenieros de backend y arquitectos con conocimientos intermedios o sólidos en programación funcional y tipado estático (familiarizados con conceptos como mónadas, tipos algebraicos e inmutabilidad) que desean aprender a estructurar sistemas escalables de nivel productivo sin depender de los patrones tradicionales de la orientación a objetos.
El autor formula la metodología Functional Declarative Design (FDD) y desglosa cómo resolver desafíos arquitectónicos clave en Haskell. A lo largo del texto se exploran Domain-Driven Design (DDD) modelado mediante DSLs embebidos (eDSLs), mónadas libres jerárquicas (`Free` y `MonadFree`) y patrones de inversión de control (IoC) e inyección de dependencias puramente funcionales. También aborda la gestión de estado mutable controlado, concurrencia mediante Software Transactional Memory (STM) y primitivas multihilo, subsistemas de persistencia para bases de datos relacionales y de clave-valor (SQL y key-value stores), manejo robusto de errores mediante tipos funcionales y testing avanzado que combina pruebas unitarias con property-based testing apoyado en librerías como QuickCheck.
El aprendizaje se canaliza a través del diseño y la implementación de dos proyectos representativos: Andromeda, un simulador y sistema de control tipo SCADA para naves espaciales que ilustra el modelado declarativo de hardware y dominios complejos con eDSLs, e Hydra, un framework multihilo para aplicaciones de consola y servicios backend que enseña a estructurar subsistemas, estado y capas de I/O. La obra aporta una visión arquitectónica integral y sumamente escasa en la literatura funcional, trascendiendo los tutoriales elementales de sintaxis para abordar problemas reales de ingeniería de software. No es un texto introductorio a Haskell ni a la computación matemática, por lo que dominar la sintaxis del lenguaje y las abstracciones monádicas básicas es indispensable para aprovechar su contenido.
- Haskell
- Programación funcional
- Functional Declarative Design
- Mónadas libres
- Domain-Driven Design
- DSLs embebidos
- Concurrencia
- Inversión de control
- Property-based testing
- Arquitectura de software
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✓ Incluye proyectos
Proyectos
Andromeda: Sistema de control SCADA para naves espaciales
Simulador y sistema de control inspirado en SCADA desarrollado en Haskell, utilizado para modelar la lógica de dominio de una nave espacial mediante lenguajes específicos de dominio embebidos (eDSLs) y mónadas libres.
Hydra: Framework concurrente para servicios backend
Framework multihilo y concurrente en Haskell para aplicaciones de consola y servicios de servidor, centrado en la separación de capas de I/O, persistencia en bases de datos y gestión de estado con inversión de control.

