LINUX.ORG.RU

История изменений

Исправление buddhist, (текущая версия) :

Они нужны, чтобы аккуратно в функциональном стиле изменять вложенные объекты. Есть у тебя к примеру, структура «человек», в ней поле — структура «голова», в ней поле — структура «глаз», в ней поле — флоат «диаметр зрачка». Тебе надо поменять диаметр зрачка конкретному экземпляру «человека». В императивных языках ты просто сделаешь присваивание. В языках с иммутабельными переменными тебе придется страдать и выдирать и копировать все вложенные объекты ручками. Чтобы этого не делать, нужны линзы.

С другой стороны, я считаю, что они вообще не нужны, а присутствие таких структур в коде на функциональном языке — признак плохого проектирования.

Исходная версия buddhist, :

Они нужны, чтобы аккуратно в функциональном стиле изменять вложенные объекты. Есть у тебя к примеру, структура «человек», в ней поле — структура «голова», в ней поле — структура «глаз», в ней поле — флоат «диаметр зрачка». Тебе надо поменять диаметр зрачка конкретному экземпляру «человека». В императивных языках ты просто сделаешь присваивание. В языках с иммутабельными переменными тебе придется страдать и выдирать и копировать все вложенные объекты ручками. Чтобы этого не делать, нужны линзы.