Only the get half is `map`-like. In combination it's more like a property descriptor, which is far easier to understand and much more efficient.

And, if it wasn't obvious, it's only the `set` half where lenses suck for performance.