Build a lens from a
getter and
setter family.
Caution: In order for the generated lens family to be
well-defined, you must ensure that the three lens laws hold:
getter (setter s a) === a
setter s (getter s) === s
setter (setter s a1) a2 === setter s a2