Veze, linkovi
Kompjuter biblioteka
Functional Design and Architecture

Magija Magija

Functional Design and Architecture

Autor: Alexander Granin
Broj strana: 562
ISBN broj: 9781617299612
Godina izdanja: 2021.

Twitter   Facebook   Linkedin   Pinterest   Email
Predlog za prevod


Design patterns and architectures for building production quality applications using functional programming, with examples in Haskell and other FP languages.

In Functional Design and Architecture you will learn:
  • Designing 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 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.

about the technology

Functional programming offers a powerful alternative to object-oriented programming that helps tackle the complexities of large-scale software. Entrenched design patterns and architectural principles made for OOP are poorly suited for creating large-scale functional applications. This book lays out new methodologies, principles, and architectures optimized for high-level software design using functional languages.

about the book

Functional Design and Architecture is a comprehensive guide to software engineering using functional programming. 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. There’s no abstract theory—you’ll learn by building exciting sample applications, including an application for controlling a spaceship and a full-fledged backend framework.

You’ll explore functional design by looking at object-oriented principles you might already know, and learn how they can be reapplied to a functional environment. By the time you’re done, you’ll be ready to apply the brilliant innovations of the functional world to serious software projects.

This is the Second Edition of the book. Consider scrolling down to the info about the First Edition.

The book is very practical. Application architectures, best practices, design patterns and approaches, — all the information you need to achieve a simple, maintainable, testable code with low complexity and low risks. By reading this book, you’ll learn many useful techniques: from the requirement analysis to the implementation of particular subsystems such as SQL and NoSQL databases, multithreading, logging. You’ll learn about design principles, application layers, functional interfaces, Inversion of Control and Dependency Injection in Haskell.

It will be useful for software engineers who want to improve their software design skills with a strong relation to many advanced Haskell concepts.

The book requires a certain level of Haskell knowledge, up to intermediate.

The book covers a big gap in the Haskell ecosystem: the lack of resources about high-level application design. It’s also important that the ideas from the book were used in real production with great success. The book offers my own methodology — Functional Declarative Design, with Hierarchical Free Monads as a core technology. Using this methodology, I created several real-world frameworks, and they are driving a successful business in several companies.


  • Architecture modelling, requirements analysis, subsystems design from the FP point of view
  • Layering
  • 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
  • Frameworks
  • 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

Related projects and materials

There are several real-world projects based on the ideas from the book:

  • Juspay’s EulerHS framework (Haskell). A full-fledged framework for simple building web backends in Haskell. Has many subsystems already integrated. Provides own philosophy of layering, testing, application architecture. The older brother of Hydra. Supports SQL DBs (MySQL, Postgres, SQLite), KVDBs (Redis), logging, multithreading, automatic regression testing and more.
  • Juspay’s Presto framework (PureScript). Framework for building mobile apps using a handy eDSL.
  • Juspay’s Presto.Backend framework (PureScript). Framework for web backends.

The book is project-based. Actually, 2-projects-based.

  • Andromeda. A SCADA-like application and simulator for star ships controlling. The first 5 chapters of the book describe the architecture and design of this project.
  • Hydra framework (Haskell). A full-fledged Free Monadic framework to build web services and console applications in Haskell. Supports various SQL DBs, KV DBs, logging, state, multithreading etc. It also provides several demo applications and testing facilities. Hydra has 3 different engines based on Final Tagless, Hierarchical Free Monads and Hierarchical Church Free Monads to provide a common basis for comparison of these approaches.

My articles about Hierarchical Free Monads:

I’m also giving talks on this topic.



• Jelena Marjanović
Sve vezano za funkcionalno programiranje - može, uvek. :)

Ostavite komentar Ostavite komentar



Hebrejski mitovi

Hebrejski mitovi

Functional Design and Architecture

Functional Design and Architecture

Veze, linkovi
Linkedin Twitter Facebook
© Sva prava pridržana, Kompjuter biblioteka, Beograd, Obalskih radnika 4a, Telefon: +381 11 252 0 272