Functional Declarative Design

Functional Design

A functional interface for communication between two subsystems can be implemented as an algebraic data type and an interpreter. Or it can be encoded as a state machine. Or it can be monadic. Or it could be built with type classes. (…) The functional paradigm also introduces a new principle of software design: finding the essence of some domain means finding its mathematical invariants, which then can be emphasized to get the correct behavior of the domain as a consequence. (Granin 2024, 18)

The Basics

References:

Granin, Alexander. 2024. Functional Design and Architecture. 2nd ed. Manning Publications.