Functional Design and Architecture (book)

Hello, my name is Alexander Granin, and this is the official page of my book «Functional Design and Architecture».

What this book is about?

The book is focussing 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. This area is not yet covered well, but the community has invented a lot of approaches, and we need to make a comprehensive source of knowledge as it was done for Object-Oriented Programming already.

Topics
  • Architecture modelling, requirements analysis, subsystems design from the FP point of view;
  • Layering of the application;
  • Embedded and external DSLs in domain modelling;
  • Monads as subsystems with effects;
  • Free monads as functional interfaces;
  • Other types of functional interfaces;
  • Inversion of Control in FP (using Free monadic eDSLs);
  • Applicability of mainstream techniques and approaches such as UML, SOLID, GRASP;
  • Interaction with impure subsystems.
Contents
Acknowledges

I’m very thankful to all the community and people who gave the light to this project.

  • My wife 🙂
  • Manning Publications: editors, correctors, managers and other people related to the project. They did a lot of work over the first five chapters of the book.
  • Reviewers and readers who made a lot of suggestions how to improve the book.
  • All my Patrons and supporters:
    • Imran Settuba
    • Vasiliy Yorkin
    • Andrei Dziahel
    • Ivan Zemlyachenko
    • Yuriy Syrovetskiy
    • Pavel Dmytriiev
    • Anatolii Prylutskyi
    • Alessandro Pezzato
    • Олег Дмитриенко
    • Sergey Kintsel
    • Mikhail Gaidamaka
    • Tim
    • Vladimir Krivopalov
    • James Bartholomew
    • Fabian
    • Steven Paul Leiva
    • Mikhail Shustov
    • eb31b2cmikqbvcq8
    • Simon Bosse
    • Alexey Lebedeff
    • Vimal Kumar
    • Gabriele Lana
    • Adil
    • ekim boran danişger
    • Eduardo Moritz Cavalcanti
    • Andrei Orlov
    • Artur Yushchenko
    • SleepingCat
    • Anton Selyanin
    • Reynaldo Cordero
    • Alexander Kucherenko
    • Ashutosh Das
    • Dorzhi Tarbaev
    • Igal Tabachnik
    • Maxim Yaskevich
    • Ilia Rodionov
    • Angel Vanegas
    • Evgeny Lyutikov
    • Vadim Sotnikov
    • Sergey Homa
    • Allan Lukwago
    • Hécate
    • James Fielder
    • C++ User Group, Russia
    • Yaroslav Voloshchuk
    • Bogicevic Sasa
    • Vasily Gorev
    • Victor Savkov
    • Julian Wilke
    • Robert Gubin
    • Артем Миклушов
    • Olaf
    • Yuriy Pitometsu
    • Eugen Wissner
    • Tyler Weir
    • Grammarly
    • Jon Fast
    • Henry Laxen
    • Sandy Maguire
    • John Walker
    • erc
    • pluton