Size: a a a

2016 December 18

MG

Max Golon in JSNN 🤔 (GSNN)
Ну и я о том же. Как только мы говорим "можно считать", мы принимаем некоторое допущение. И таки да, можно считать чистой. Но по определению она таковой не является.
источник

AZ

Andrey Zaytsev in JSNN 🤔 (GSNN)
A function can perform input or output and still be pure
источник

AZ

Andrey Zaytsev in JSNN 🤔 (GSNN)
В данном случае переменные окружения - это input. Поэтому функция будет чистой по определению.
источник

MG

Max Golon in JSNN 🤔 (GSNN)
However, it must depend on nothing other than the argument values.
А результат наш ей функции таки зависит от этих констант
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
Andrey Zaytsev
В данном случае переменные окружения - это input. Поэтому функция будет чистой по определению.
переменные окружения не инпут
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
Max Golon
However, it must depend on nothing other than the argument values.
А результат наш ей функции таки зависит от этих констант
я склоняюсь, что если во время исполнения константа не меняется (ну в этом ведь и есть суть константы), то это норм
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
потому что отличие такого кода не сильно заметно
input=>input*1000


const K = 1000

input=>input*K
источник

MG

Max Golon in JSNN 🤔 (GSNN)
Да, но если ты пишешь тест на такую функцию, его можно зафейлить не меняя функцию и тест
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
да я как раз думал про это написать))
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
что при написании теста тебе надо включать эту константу, но это не особо хорошо
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
Max Golon
However, it must depend on nothing other than the argument values.
А результат наш ей функции таки зависит от этих констант
А если в JS одна функция вызывает другую, то может она считаться чистой?
источник

MG

Max Golon in JSNN 🤔 (GSNN)
Да, это интересный вопрос. Можно сказать что если внутри вызывается чистая функция, то внешняя остается чистой. С другой стороны, функция возвращающая например тип экшена, который прописан внутри неё, тоже будет чистой. И есть некоторое противоречие.
источник

MG

Max Golon in JSNN 🤔 (GSNN)
Ну в статье есть целый параграф о том, какие внутри выражения может иметь чистая функция и при этом оставаться чистой
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
Ещё противоречие в том, что в JS можно манкипатчить функции
источник

DF

Dmitri Frolov in JSNN 🤔 (GSNN)
Sergey Arkhipov
Ещё противоречие в том, что в JS можно манкипатчить функции
до внутреннего скоупа функции снаружи не добраться
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
А в JS позднее связывание?
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
in JavaScript function context is defined while calling the function, not while defining it
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
ШАХ И МАТ АТЕИСТЫ
источник

SA

Sergey Arkhipov in JSNN 🤔 (GSNN)
Вы не подумайте, что я о том, что JS - плохой язык, я о том, что в языках с поздним связыванием + возможностью манкипатчинга, чистота функций - это условность, договоренность между людьми. Контракт. Можно считать любую функцию, которая не делает IO (в случае JS это еще и манипуляции с домом) + не ковыряется во входных параметрах, чистой. Чище язык сделать не позволяет
источник

DF

Dmitri Frolov in JSNN 🤔 (GSNN)
никто не совершенен
источник