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.
I thought this book was excellent in teaching the reader, well, functional design and architecture. It breaks down comparisons with typical OOP or imperative approaches, and gives an honest evaluation of the pros and cons between all of these. I think this book would serve well as a reference manual, especially in the second and third parts. The author also does a great job of referring additional material if the reader wants to learn more about a topic; e.g. Parallel and Concurrent Programming in Haskell in the chapter on concurrency and real world applications.
OOD - Object Oriented Design in UML class diagrams
⁉ Spoiler Alerts (Highlights)
FDD is a full development cycle methodology along the lines of object-oriented design (OOD), which introduces functional application architectures, design patterns, design principles, and a new architectural design pattern called hierarchical free monads (HFM).
Immutability, purity, and wrapping side effects into a safe representation opened doors to parallel programming heaven.
I found the book to be very well written and organized. I knew about free monads before but still found the book very informative. The author gives you a good methodology on how to compose them to achieve a functional clean architecture.