The Tyranny Of Statements
Statements compose linearly. Expressions compose in a tree-like manner.
This single observation explains why modern imperative programming so frequently devolves into an unreadable, brittle mess. When you build a system out of linear statements, you are entirely dependent on temporal execution and side-effects. Step B can only understand what happened in Step A if Step A wrote a value to a shared, mutable location. But when you compose expressions in a tree, data flows effortlessly from the leaves to the root. The output of the inner expression becomes the immediate, immutable input of the outer expression. The structure of the code perfectly mirrors the flow of the data.