I glimpsed over the first page, and what I knew for years as **getters** and **setters** - just functions which allow you to do additional stuff while modifying a **property**, here called a **lens**, or in other words lens is a readable and writeable property. I wonder whether other stuff, like prisms, may bring something new to the table (don't know what are these though). Maybe someone who knows this better may explain in layman terms?