Checking out your gist, the lens-related types are very reminiscent of Scalaz's definitions. Looking at the paper you kindly referenced (thanks!), it makes sense as the author of "Asymmetric Lenses in Scala" is Tony Morris (the originator of scalaz, IIRC).
Here's Scalaz 7's fully generalized LensFamily type:
with Lens defined as:
type Lens[A, B] = LensFamily[A, A, B, B]
Now, off to reading that paper! :-)