Одним із принципів функціонального програмування є використання чистих функцій. Чиста функція - це функція, яка не має побічних ефектів і є відносно прозорою.
Getters не є прозоро прозорими - якщо Setter викликається між дзвінками до Getter, повернене значення Getter змінюється, навіть якщо його параметри не мають (як правило, відсутні параметри)
Встановлювачі створюють побічні ефекти - виклик сеттера зазвичай маніпулює значенням, яке не є його зворотним значенням (насправді, традиційно сеттер нічого не повертає)
Я знаю, що в Scala ми просто сприймаємо той факт, що ми з'єднуємо дві парадигми (функціональну та об'єктно-орієнтовану) і використовуємо getters / setters так, як ми б на такій мові, як Java.
Такою мовою, як Haskell (якою я не вільно володію, але мені кажуть, є вірною "чистої" функціональної мови) Мені просто цікаво, як би ви моделювали властивості для таких об'єктів, що Getters є прозоро прозорими та Setters чи немає побічних ефектів?
Чи було б рішенням повернути копію об'єкта, на який встановлено встановлення, як повернуте значення програми, і ця копія містить зміну значення властивості?