LINUX.ORG.RU

Сообщения clean_dude

 

Вопрос по чистоте ф-ций

Вот такой кодец, допустим.


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
Функция депозит всегда возвращает одно и то же — экземпляр аккаунта (который подается в качестве аргумента).

Но если бы она, даже, допустим, возвращала не сам экземпляр, а баланс экземпляра, она все равно возвращала бы одно и то же — баланс экземпляра, который подан в качестве аргумента.

То есть, с математической точки зрения, пракчески любая ф-ция чиста, и референциально-прозрачна.

Однако, поклонники ФП утверждают, что это не так. В таком случае, у них некая своя трактовка. Вот, собственно, в этом и вопрос. Хотелось бы услышать эту трактовку, в четкой и ясной форме.

Спасибо.

 , ,

clean_dude
()

RSS подписка на новые темы