LINUX.ORG.RU

Может ли ФП работать с непримитивными типами данных?

 


0

1

Функция типа вот этой считается чистой:


pure := method(x, x + x)

pure(1)  # --> 2
pure(1)  # --> 2

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

Number foo := "bar"

pure(1) foo  # --> bar (тут и далее мы отсылаем сообщение объекту 2, чтобы проверить его состояние)
Number foo = "baz"  
pure(1) foo  # --> baz

Поскольку, у нас любые данные типа Number имеют стейт, мы уже не можем утверждать, что наша pure возвращает всегда одно и то же. Понятное дело, что это будет происходить при любых непримитивных данных, не только с числами. Из этого должно следовать, что в ФП должны быть запрещены любые непримитивные данные. Так ли это?



Последнее исправление: theKingOfJava (всего исправлений: 2)
Ответ на: комментарий от theKingOfJava

я понял смысл

(сарказм) ага, видно...

Macil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.