A tiny part of the lens library which you can depend upon


Version on this page:
LTS Haskell 21.13:
Stackage Nightly 2023-09-27:
Latest on Hackage:

See all snapshots microlens appears in

BSD-3-Clause licensed by Artyom
Maintained by Artyom
This version can be pinned in stack with:microlens-,2428

Module documentation for

Depends on 1 package(full list with versions):

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.


  • Removed toListOf.
  • Removed +~, -~, *~, //~ and the Lens.Micro.Extras module.

  • Added ix and at.
  • Added traversed.
  • Moved some things into Lens.Micro.Internal.
  • Bumped base version.

  • Moved some things into Lens.Micro.Type and Lens.Micro.Classes.
  • Each and Field* aren’t exported by Lens.Micro now.

  • Added each.

  • Added ASetter', which is useful because we can’t provide real Setter and Setter'.

First release.