Part 1. The Immutability Gap: Why Java Records Need Optics
Part 2. Optics: Lenses, Prisms, and Traversals in Practice
Useful links:
JEP 468. Derived Record Creation
Runnable Demos on GitHub.
Optics Fundamentals
βββββββββββ
β Fold β (read-only, zero-or-more)
ββββββ¬βββββ
β
ββββββββββββ΄βββββββββββ
β β
ββββββ΄βββββ βββββββ΄ββββββ
β Getter β β Traversal β (read-write, zero-or-more)
ββββββ¬βββββ βββββββ¬ββββββ
β β
β βββββββ΄ββββββ
β β β
ββββββ΄βββββ βββββββ΄ββββββ βββββ΄ββββ
β Lens β β Affine β βSetter β
ββββββ¬βββββ βββββββ¬ββββββ βββββββββ
β (zero-or-one)
β β
β βββββββ΄ββββββ
β β Prism β
β βββββββ¬ββββββ
β β
βββββββββ¬ββββββββ
ββββββ΄βββββ
β Iso β (exactly-one, reversible)
βββββββββββ