A look at functional lenses in general, and the haskell "lens" library specifically. This talk walks through why lenses are encoded the way they are, and builds up to demonstrations of the lens library.
The demonstration code is available at https://github.com/markhibberd/lens-talk (see script.org and src/*.hs)