Вопрос по чистоте ф-ций
Вот такой кодец, допустим.
Account := Object clone do(
balance ::= 0
deposit := method(amount, setBalance(balance + amount))
)
account := Account clone
deposit := method(amount, account, account deposit(amount); account)
deposit(10, account) print
deposit(30, account) print
# ::: Account_0xbb0a18:
# ::: balance = 10
# ::: Account_0xbb0a18:
# ::: balance = 40
Но если бы она, даже, допустим, возвращала не сам экземпляр, а баланс экземпляра, она все равно возвращала бы одно и то же — баланс экземпляра, который подан в качестве аргумента.
То есть, с математической точки зрения, пракчески любая ф-ция чиста, и референциально-прозрачна.
Однако, поклонники ФП утверждают, что это не так. В таком случае, у них некая своя трактовка. Вот, собственно, в этом и вопрос. Хотелось бы услышать эту трактовку, в четкой и ясной форме.
Спасибо.