Мне нужна помощь, чтобы разглядеть разницу между моим текущим понятием состояния ООП и тем, как это будет сделано на функциональном языке, таком как Haskell или Clojure.
Чтобы использовать банальный пример, скажем, мы имеем дело с упрощенными объектами/структурами банковского счета/независимо. В языке OOP у меня будет некоторый класс, содержащий ссылку на BankAccount, в которой будут переменные экземпляра для таких вещей, как процентная ставка, и методы, такие как setInterestRate(), которые изменяют состояние объекта и вообще ничего не возвращают. Скажем, Clojure, у меня будет структура банковского счета (прославленный хэш) и специальные функции, которые берут параметр учетной записи банка и другую информацию и возвращают новую структуру. Поэтому вместо изменения состояния исходного объекта у меня теперь есть новый, который будет возвращен с желаемыми изменениями.
Итак... что мне с этим делать? Перезаписать любую переменную, ссылаясь на старый банковский счет? Если да, то имеет ли это преимущества по сравнению с изменяющимся в государстве подходом ООП? В конце концов, в обоих случаях кажется, что у одного есть переменная, которая ссылается на объект с необходимыми изменениями. Затормозившись, как и я, у меня есть только смутное представление о том, что происходит.
Я надеюсь, что это имело смысл, спасибо за любую помощь!