Я слышал такой совет: если вам нужно менять значения где-то в глубине структуры данных, значит у вас что-то не так с архитектурой. Менять нужно только то, что на первом уровне вложенности. Следовательно, линзы не нужны. Что думаете, дельный совет или нет?
насколько я помню там в оригинале шла речь о том, что архитектурной ошибкой будет большое количество таких выпуклых структур данных, а не единичные случаи - это да. Я для себя выработал критерий, что если подобных вручную написанных линз больше чем 5 - 6 на модуль, то стоит задуматься о рефакторинге