Manning Publications, 2025. — 456 p. — ISBN-13 978-1617299612.
Design patterns and architectures for building production quality applications using functional programming.
Functional Design and Architecture is a pioneering guide to software engineering using Haskell and other functional languages. In it, you’ll discover Functional Declarative Design and other design principles perfect for working in Haskell, PureScript, F#, and Scala.
In Functional Design and Architecture you will learnDesigning production applications in statically typed functional languages such as Haskell
Controlling code complexity with functional interfaces
Architectures, subsystems, and services for functional languages
Developing concurrent frameworks and multithreaded applications
Domain-driven design using free monads and other functional tools
Property-based, integrational, functional, unit, and automatic whitebox testing
Functional Design and Architecture lays out a comprehensive and complete approach to software design that utilizes the powerful and fascinating ideas of functional programming. Its examples are in Haskell, but its universal principles can be put into practice with any functional programming language. Inside, you’ll find cutting-edge functional design principles and practices for every stage of application development, from architecting your application through to running simple and maintainable tests.
About the technology:Functional programming affects every aspect of software development, from how you write individual lines of code to the way you organize your applications and data. In fact, many standard OO patterns are unsuitable or unnecessary for FP applications. This book will reorient your thinking to align software design with a functional programming style. The examples are in Haskell, but the ideas are universal.
Introduction to functional declarative designWhat is software design?
Introduction to functional declarative designWhat is software design?
The basics of functional declarative design
Minimum viable productDrafting the MVP application
End-to-end design
Embedded domain-specific languages
Domain modeling with free monads
Stateful and reactive applicationsStateful applications
Reactive applications
Designing real-world softwareConcurrent application framework
Foundational subsystems
Persistence: Key–value databases
Persistence: Relational databases
Error handling and dependency inversion
Business logic design
Testing