在函数式编程中,闭包被认为是不纯的吗?
似乎人们通常可以通过直接将值传递给函数来避免闭包。因此,应在可能的情况下避免闭包吗?
如果它们是不纯的,而且我正确地指出它们是可以避免的,那么为什么这么多函数式编程语言支持闭包?
纯函数的标准之一是:“给定相同的参数值(S),函数总是计算相同的结果值。”
假设
f: x -> x + y
f(3)不会总是给出相同的结果。f(3)依赖于y的值,而不是f的参数。因此,f不是一个纯函数。
既然所有闭包都依赖于不是参数的值,那么任何闭包怎么可能是纯的呢?是的,理论上闭包值可以是常数,但是仅仅通过查看函数本身的源代码就无法知道这一点。
这使我想到的是,同样的