Einer der Grundsätze der funktionalen Programmierung ist die Verwendung von reinen Funktionen. Eine Pure-Funktion ist nebenwirkungsfrei und referenziell transparent.
Getter sind nicht referentiell transparent - wenn ein Setter zwischen dem Aufruf der Getter, die Getter Rückgabewert ändert , auch wenn seine Parameter nicht ( in der Regel keine Parameter) aufgerufen wird
Setter verursachen Nebenwirkungen - Das Aufrufen eines Setters manipuliert normalerweise einen Wert, der nicht der Rückgabewert ist (tatsächlich gibt ein Setter traditionell nichts zurück).
Ich weiß, dass wir in Scala die Tatsache akzeptieren, dass wir zwei Paradigmen (funktional und objektorientiert) miteinander verbinden und Getter / Setter verwenden, wie wir es in einer Sprache wie Java tun würden.
In einer Sprache wie Haskell (die ich nicht fließend beherrsche, aber mir wurde gesagt, dass sie einer "reinen" Funktionssprache besser entspricht) bin ich nur neugierig, wie Sie Eigenschaften auf Objekten modellieren würden, bei denen Getters referenziell transparent und Setter sind sind Nebenwirkungen frei?
Wäre die Lösung, eine Kopie des Objekts, für das der Setter aufgerufen wurde, als Rückgabewert des Setters zurückzugeben, und diese Kopie enthält die Änderung des Eigenschaftswerts?