Haskell's strength: generalising with lenses