私の現在の OOP の状態の概念と、Haskell や Clojure のような関数型言語で行われる方法との違いを理解する助けが必要です。
ハックニーの例を使用するために、単純化された銀行口座オブジェクト/構造体/その他を扱っているとしましょう。OOP 言語では、BankAccount への参照を保持するクラスがあり、金利などのインスタンス変数と、オブジェクトの状態を変更し、通常は何も返さない setInterestRate() などのメソッドがあります。たとえば Clojure では、銀行口座の構造体 (美化されたハッシュマップ) と、銀行口座のパラメーターやその他の情報を受け取り、新しい構造体を返す特別な関数を用意します。したがって、元のオブジェクトの状態を変更する代わりに、必要な変更を加えた新しいオブジェクトが返されます。
それで...どうすればいいですか?古い銀行口座を参照していた変数を上書きしますか? もしそうなら、それは状態を変えるOOPアプローチよりも利点がありますか? 結局、どちらの場合も、必要な変更を加えたオブジェクトを参照する変数があるようです。私は遅れているので、何が起こっているのか漠然とした概念しか持っていません。
それが理にかなっていることを願っています。助けてくれてありがとう!