A lens is defined here as a means to transform a structure, as function of, a transformation on one of its components. So you may combine the focused component mapping and the lens, over the initial structure, giving a transformed structure or a query result.

It takes the shape of a function of a profunctor on the component, giving a profunctor on the structure.

To characterize a lens (lens generation) you need a component selection function, and a structure update or query function from the image of the selected component transformation.

Since uncurrying is needed for lens generators, we add the Strong class lenses over pairs, defined below, as requirement.

Since Constant is the Applicative type in the traversal, because in its instance "pure" ignores the combinator, whatever the traversable instance, you will get the Monoid composition instead, folding left to right as the container is traversed.

With dimap (getter &&& id) (uncurry setter) you have a lens from the structure to a pair.

Composing it with _1 (the lens on the first item of a pair) we further put the focus on the component transformation p a b, adding the requirement that the profunctor should implement the class Strong where _1 is defined.