MARTIN, ROBERT C.
Prólogo
	Prefacio
	Agradecimientos
	Sobre el autor
	
	Parte I. Conceptos funcionales básicos
	Capítulo 1. Inmutabilidad	
	Capítulo 2. Datos persistentes
	Capítulo 3. Recursión e iteración
	Capítulo 4. Pereza
	Capítulo 5. Programas con estado	
	
	Parte II. Análisis comparativo	
	Capítulo 6. Factores primos	
	Capítulo 7. Partida de bolos
	Capítulo 8. Conductores de autobús cotillas
	Capítulo 9. Programación orientada a objetos
	Capítulo 10. Tipos	
	
	Parte III. Diseño funcional	
	Capítulo 11. Flujo de datos
	Capítulo 12. SOLID
	
	Parte IV. Pragmática funcional	
	Capítulo 13. Pruebas	
	Capítulo 14. GUI
	Capítulo 15. Concurrencia
	
	Parte V. Patrones de diseño
	Capítulo 16. Revisión de los patrones de diseño
	
	Parte VI. Caso práctico
	Capítulo 17. Wa-Tor
	
	Epílogo	
	Índice alfabético 
En Diseño funcional, el reputado ingeniero de software Robert C. Martin («Uncle Bob») explica cómo y por qué utilizar la programación funcional para crear sistemas mejores para clientes reales. Martin compara las estructuras de la programación convencional orientada a objetos en Java con las que permiten los lenguajes funcionales, identifica los mejores roles para cada una y muestra cómo crear sistemas mejores utilizándolos correctamente en cada contexto.El enfoque de Martin es pragmático, con una teoría mínima, y se centra en la solución de problemas «desde las trincheras». A través de ejemplos accesibles, los desarrolladores profesionales descubrirán cómo el lenguaje Clojure, rico a nivel semántico y fácil de aprender, puede ayudarles a mejorar la limpieza del código, el diseño, la disciplina y los resultados. Martin examina los conocidos principios SOLID y los patrones de diseño Gang of Four desde una perspectiva funcional, y revela por qué los patrones siguen teniendo un gran valor para los programadores funcionales, y cómo usarlos para conseguir resultados superiores.* Entienda conceptos básicos funcionales: inmutabilidad, datos persistentes, recursividad, iteración, pereza y programas con estado.* Contraste los enfoques funcionales y de objetos a través de casos prácticos elaborados con cuidado.* Explore técnicas de diseño funcional para el flujo de datos.* Use principios SOLID clásicos para escribir mejor código Clojure.* Domine enfoques pragmáticos respecto a las pruebas funcionales, las GUI y la concurrencia.* Aproveche al máximo los patrones de diseño en entornos funcionales.* Cree paso a paso una aplicación de clase empresarial en Clojure.