Reliable development process vs. Reliable System.
No gradle.
We have 2 functions: f g To compose them, the output of 1 has to be exactly the input of the other.
z: fI => hO = f andThen g andThen h
h(g(f))
g must take the output of f
If we want to chain f to g, and g Monads allow us to relate unrelated functions and treat them as a single unit.
The types should express the reality.