I've come full cycle:
0) Procedural
1) OO
2) FP
3) Really started to dislike mutability
4) Developed various FP frameworks
5) Back to pure (immutable!) OO and messages!
0) Procedural
1) OO
2) FP
3) Really started to dislike mutability
4) Developed various FP frameworks
5) Back to pure (immutable!) OO and messages!
Lenses look like a solution to transition 'deep' immutable state, but I find them cumbersome: YMMV.
Object Orientation has excellent composability with regards to state and with minimum fuss.
The step I took is to eradicate mutable OO state, and replace it with a pure OO substrate.