Если чистая функция возвращает нечистую функцию, является ли она чистой - PullRequest
2 голосов
/ 18 мая 2019

Если чистая функция возвращает нечистую функцию, является ли она чистой

const fn = endpoint => () => { 
  console.log(endpoint);
}

Технически fn чисто, не так ли?

Ответы [ 2 ]

4 голосов
/ 18 мая 2019

Да, внешняя функция чистая.Вызов функции не вызывает никаких побочных эффектов, кроме фоновых механизмов, необходимых для создания лямбды (и если вы посчитаете эти эффекты, никакие функции не будут чистыми, так как по крайней мере стек вызовов изменяется функциейвызов).

Вы можете заменить этот вызов функции на функцию, которая возвращает inline, и код будет вести себя идентично.

0 голосов
/ 19 мая 2019

Я не согласен с @Carcigenicate.Функция f является чистой, если выражение f(x) является ссылочно-прозрачным для каждого ссылочно-прозрачного выражения x.Это означает, что вы можете заменить f(x) на некоторое ЗНАЧЕНИЕ, и наблюдаемое поведение программы не изменится.Это не относится к console.log.

Это отличается от, скажем, в Haskell, где IO является истинным значением, а не побочным эффектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...