Одним из принципов функционального программирования является использование чистых функций. Функция Pure - это функция, которая не имеет побочных эффектов и прозрачна по ссылкам.
Получатели не являются ссылочно прозрачными - если метод вызова вызывается между вызовами метода получения, возвращаемое значение метода получения изменяется, даже если его параметры не изменяются (как правило, параметров нет)
Сеттеры вызывают побочные эффекты. Вызов сеттера обычно манипулирует значением, которое не является его возвращаемым значением (фактически, обычно сеттер ничего не возвращает)
Я знаю, что в Scala мы просто любезно принимаем тот факт, что мы объединяем две парадигмы (функциональную и объектно-ориентированную) и используем геттеры / сеттеры, как в языке, подобном Java.
В таком языке, как Haskell (с которым я не бегло говорю, но мне говорят, что это более справедливо по отношению к «чистому» функциональному языку), мне просто любопытно, как бы вы смоделировали свойства объектов таким образом, чтобы Getters были ссылочно прозрачными и Setters Побочные эффекты свободны?
Будет ли решение возвращать копию объекта, для которого вызывался установщик, в качестве возвращаемого значения установщика, и эта копия содержит изменение значения свойства?