This is an extract from lens (with no dependencies). It's not a toy lenses library, unsuitable for “real world”, but merely a small one. It is compatible with lens, and should have same performance. It also has better documentation.
Use this library:
if you want to define lenses or traversals in your own library, but don't want to depend on lens
if you are new to lenses and want a small library to play with, but don't want to use something “inferior” or have to relearn things when/if you switch to lens
Don't use this library:
if you need Isos, Prisms, indexed traversals, or actually anything else which isn't defined here
if you think lenses compose “in the wrong order” (in which case you're looking for fclabels)