The core of my argument is that good functional programming requires more working memory on behalf of the operator than equivalent procedural programs. The introduction of state, which can be thought of as materializations of the events processed by the system works well with how most people model their worlds.
Humans operate on a materialized view
My wallet has a balance of 20 dollars. It isn’t a wallet with a 12.43 transaction at McDonald’s, a 15.99 charge from Netflix and a 24.00 venmo from my friend Ray, it’s got 20 dollars.
For me this is a useful approach to modeling my world.
Functional descriptions work well until you ask someone some execution generated some output.
People also operate on a mental stack
Academics will have an easier time.
I’d be remiss if I didn’t mention that it’s often the more academically inclined that tout the promises of functional programming.
Materializations can make it into this mental stack.