如果纯函数返回不纯函数,那么它是否是纯函数

时间:2019-05-17 21:38:56

标签: javascript function ecmascript-6 functional-programming

如果纯函数返回不纯函数,那么它是纯

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

从技术上讲fn是纯粹的吗?

2 个答案:

答案 0 :(得分:4)

是的,外部函数是纯函数。除了创建lambda所需的后台机制外,函数的调用不会引起任何副作用(并且,如果算了这些影响,则没有函数会是纯函数,因为至少函数会改变调用堆栈呼叫)。

您可以将此函数调用替换为其内联返回的函数,并且代码的行为相同。

答案 1 :(得分:0)

我不同意@Carcigenicate。如果表达式f对于每个参照透明表达式f(x)是参照透明的,则函数x是纯函数。 这意味着您可以将f(x)替换为VALUE,并且程序的可观察行为不会改变。 console.log并非如此。

这与Haskell中的情况有所不同,其中IO是真实值,而不是副作用语句。