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)