Basic optics: lenses, prisms, and traversals in Haskell | Hacker News Reader