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)
Note that microlens has no dependencies starting from GHC 7.10 (base-4.8). Prior to that, it has to depend on transformers-0.2 or above.
Also note that it's not done yet and there's a lot of things missing.
Changes
0.2.0.0
Removed toListOf.
Removed +~, -~, *~, //~ and the Lens.Micro.Extras module.
0.1.5.0
Added ix and at.
Added traversed.
Moved some things into Lens.Micro.Internal.
Bumped base version.
0.1.3.0
Moved some things into Lens.Micro.Type and Lens.Micro.Classes.
Each and Field* aren’t exported by Lens.Micro now.
0.1.2.0
Added each.
0.1.1.0
Added ASetter', which is useful because we can’t provide real Setter and Setter'.