Composable concurrency
Functional programming is not only about composing functions and algebraic data structures--it makes concurrency composable--something that's virtually impossible with other programming paradigms.
How can we take what we've learned about morphisms and apply it to creating highly concurrent processing models? Suppose we start with a monolithic application with a single binary executable.
What if we can focus only on the morphisms, that is, the interface of inputs and outputs, in our system?
Consider that we're given the following:
- Inputs and outputs can be mapped through isomorphisms
- The state exists in the groupings of our objects
- Morphisms are stateless
Finite state machines
Can we assume that the finite state machines (FSMs) of our system exist within our groupings? (Where the FSM would be like the A and B groupings that we looked at previously.)
Let's imagine systematically decomposing our FSMs into the smallest possible components.
Starting with our context component C,...