microlens: A tiny lens library with no dependencies
NOTE: If you're writing an app, you probably want microlens-platform – it has the most features. microlens is intended more for library writers who want a tiny lens library (after all, lenses are pretty useful for everything, not just for updating records!).
This library 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.
There's a longer readme on Github. It has a migration guide for lens users, a description of other packages in the family, a discussion of other lens libraries you could use instead, and so on.
Here are some usecases for this library:
You want to define lenses or traversals in your own library, but don't want to depend on lens. Having lenses available often make working with a library more pleasant.
You just want to be able to use lenses to transform data (or even just use
over _1
to change the first element of a tuple).You are new to lenses and want a small library to play with.
However, don't use this library if:
You need
Iso
s,Prism
s, indexed traversals, or actually anything else which isn't defined here (though some indexed functions are available elsewhere – containers and vector provide them for their types, and ilist provides indexed functions for lists).You want a library with a clean, understandable implementation (in which case you're looking for lens-simple).
As already mentioned, if you're writing an application which uses lenses more extensively, look at microlens-platform – it combines features of most other microlens packages (microlens-mtl, microlens-th, microlens-ghc).
If you want to export getters or folds and don't mind the contravariant dependency, please consider using microlens-contra.
If you haven't ever used lenses before, read this tutorial. (It's for lens, but it applies to microlens just as well.)
Note that microlens has no dependencies starting from GHC 7.10 (base-4.8). Prior to that, it depends on transformers-0.2 or above.
Downloads
- microlens-0.4.13.1.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.5.0, 0.2.0.0, 0.3.0.0, 0.3.1.0, 0.3.2.0, 0.3.3.0, 0.3.4.0, 0.3.4.1, 0.3.5.0, 0.3.5.1, 0.4.0.0, 0.4.0.1, 0.4.1.0, 0.4.2.0, 0.4.2.1, 0.4.3.0, 0.4.4.0, 0.4.4.1, 0.4.4.2, 0.4.4.3, 0.4.5.0, 0.4.6.0, 0.4.7.0, 0.4.8.0, 0.4.8.1, 0.4.8.2, 0.4.8.3, 0.4.9, 0.4.9.1, 0.4.10, 0.4.11, 0.4.11.1, 0.4.11.2, 0.4.12.0, 0.4.13.0, 0.4.13.1 (info) |
---|---|
Change log | CHANGELOG.md |
Dependencies | base (>=4.5 && <5), transformers (>=0.2) [details] |
Tested with | ghc ==9.8.1, ghc ==9.6.3, ghc ==9.4.7, ghc ==9.2.8, ghc ==9.0.2, ghc ==8.10.7, ghc ==8.8.4, ghc ==8.6.5, ghc ==8.4.4, ghc ==8.2.2, ghc ==8.0.2, ghc ==7.10.3 |
License | BSD-3-Clause |
Author | Edward Kmett, Artyom Kazak |
Maintainer | Steven Fontanella <steven.fontanella@gmail.com> |
Revised | Revision 1 made by AndreasAbel at 2023-10-11T19:28:17Z |
Category | Data, Lenses |
Home page | http://github.com/stevenfontanella/microlens |
Bug tracker | http://github.com/stevenfontanella/microlens/issues |
Source repo | head: git clone https://github.com/stevenfontanella/microlens.git |
Uploaded | by stevenfontanella at 2022-12-14T05:19:45Z |
Distributions | Arch:0.4.13.1, Debian:0.4.11.2, Fedora:0.4.13.1, LTSHaskell:0.4.13.1, NixOS:0.4.13.1, Stackage:0.4.13.1, openSUSE:0.4.13.1 |
Reverse Dependencies | 243 direct, 646 indirect [details] |
Downloads | 89705 total (383 in the last 30 days) |
Rating | 2.75 (votes: 12) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2022-12-14 [all 1 reports] |