You can find more historical references at github.com/ekmett/lens/wi…
![](https://pbs.twimg.com/media/D6cQY6iWkAEaB1H.jpg)
![](https://pbs.twimg.com/media/D6cQo_ZWkAE9a8-.png)
reverseGet . get ≅ id
![](https://pbs.twimg.com/media/D6cQ8iVWkAA4nJT.png)
![](https://pbs.twimg.com/media/D6cREP8XkAAJC7f.jpg)
![](https://pbs.twimg.com/media/D6cRLt9WwAApndt.png)
Another useful type of optics – `Fold`. It allows, given a Monoid for the data type `M`, to fold (reduce) its value into type `M`:
![](https://pbs.twimg.com/media/D6cRaFfWwAANG6Z.png)
![](https://pbs.twimg.com/media/D6cRidmXoAEMpI8.jpg)
![](https://pbs.twimg.com/media/D6cR0vIWAAAnEG5.jpg)
Let's use the same data structure and example data set as in previous example:
![](https://pbs.twimg.com/media/D6cSYp9XsAE_WGA.jpg)
However, it's not an entry-level work, so be prepared for complicated categorical topics like profunctor, adjoints and Tambara modules.