Кажется, я не могу найти никакого объяснения того, для чего используются линзы в практических примерах.Этот короткий абзац со страницы Hackage является самым близким, что я нашел:
Этот модуль обеспечивает удобный способ доступа и обновлять элементы структуры. Он очень похож на Data.Accessors, но немного более общий и имеет меньше зависимостей. Мне особенно нравится, как чисто он обрабатывает вложенные структуры в монады состояния.
Итак, для чего они используются? Какие преимущества и недостатки они имеют по сравнению с другими методами? Зачем они нужны?