Applications today are complex, built on top of frameworks that create abstractions fundamentally based on mutability and imperative code.

They introduce concepts like reactivity or local state or algebraic effects, all in attempt to represent views as a function of state.

In reality, applications are much more sophisticated and require third-party libraries for any effects other than updating a view.