Funktionale Programmierung: Zustand vs. Neuzuweisung

Ich brauche Hilfe, um mich mit dem Unterschied zwischen meiner aktuellen OOP-Auffassung von Staat und der Art und Weise, wie dies in einer funktionalen Sprache wie Haskell oder Clojure geschehen würde, vertraut zu machen.

Um ein abgedroschenes Beispiel zu verwenden, nehmen wir an, wir haben es mit vereinfachten Bankkontenobjekten / Strukturen / was auch immer zu tun. In einer OOP-Sprache würde eine Klasse einen Verweis auf ein Bankkonto haben, das Instanzvariablen für Dinge wie Zinssatz und Methoden wie setInterestRate () enthält, die den Status des Objekts ändern und im Allgemeinen nichts zurückgeben. In Clojure hätte ich eine Bankkontostruktur (eine verherrlichte Hashmap) und spezielle Funktionen, die einen Bankkontoparameter und andere Informationen verwenden und eine neue Struktur zurückgeben. Anstatt also den Status des ursprünglichen Objekts zu ändern, wird jetzt ein neues Objekt mit den gewünschten Änderungen zurückgegeben.

So ... was mache ich damit? Welche Variable, die auf das alte Bankkonto verweist, überschreiben? Wenn ja, hat das Vorteile gegenüber dem staatlich veränderten OOP-Ansatz? Am Ende scheint es in beiden Fällen eine Variable zu geben, die das Objekt mit den erforderlichen Änderungen referenziert. Retardiert wie ich bin, habe ich nur eine vage Vorstellung davon, was los ist.

Ich hoffe das hat Sinn gemacht, danke für jede Hilfe!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage