About the Book
The book is focusing on the design patterns, best practices and approaches to create applications using pure functional language such as Haskell. It aims to consolidate all the knowledge about how to create big applications in pure functional manner. The book builds a complete methodology based on Hierarchical Free Monads step-by-step. The material contains several original ideas on structuring applications, using monads, building DSLs. These ideas are very practical and proven to be working in real production. The book is practice-oriented, project-based. It's a fundamental source of knowledge on Software Engineering in Haskell.
The book will be useful for those who wants to learn Software Engineering, Design and Architecture in Functional Programming and Haskell. A certain level of Haskell is required (up to Intermediate). Useful for Senior Software Engineers and Software Architects.
The book is finished in its draft. It has 9 chapters, 732K symbols, 113K words. Now I'm working on it to make the book solid. I need to fill the gaps, edit the chapters, restyle and reformat the text.
I have a plan to print the book in paper. Once it's done, all the buyers will get a copy for free.
The book is project-based. There are two showcase projects for it:
- Hydra, a full-fledged framework for building web services, multithreaded and concurrent applications with SQL and KV DB support. Contains 3 engines: Final Tagless, Free Monad and Church Encoded Free Monad, as well as several demo applications to compare these 3 approaches.
- Andromeda, a SCADA software for spaceship control.
- Architecture modelling, requirements analysis, subsystems design from the FP point of view
- Embedded and external DSLs and domain modelling
- Subsystems and services
- Free Monads as functional interfaces
- Other types of functional interfaces: Final Tagless, ReaderT pattern, Service Handle Pattern, GADTs
- Hierarchical Free Monads as a basis for effects
- Inversion of Control and Dependency Injection in FP
- Applicability of the mainstream techniques and principles such as UML, SOLID, GRASP
- Interaction with impure subsystems
- Project structuring
- Incorporation of SQL DBs, KV DBs
- Design of business logic
- Design of web services and console applications
- And many other high-level topics
About the Author
Haskeller, speaker, researcher, author.
Author of the book "Functional Design and Architecture"
Proficient C++ Developer
Functional C++ Advocate