

Mutation (or not) is a matter of runtime semantics, not surface semantics. Let the compiler figure it out. (Functional-but-in-place c.f. Koka, Roc, Lean4)
Purity and referential transparency make writing correct, zero-maintenance code easy.
Although you can extract a lot of money from your customers if you deliver inscrutible code that needs a lot of maintenance.
Harmful: compilers
Better alternative: magnetized needle and a steady hand