在 FP 中,避免了全局函数/常量。
所以我的问题是偏函数是纯的吗?
例如,如果我必须计算圆的面积,我有这样的事情:
const calcArea = PI => radius => PI * radius * radius
所以我可以部分应用它:
const calcAreaCircle = calcArea(Math.PI) //
calcAreaCircle(5) => // 3.13 * 5 * 5 = 78.53981633974483
因此,如果我更改 PI 并再次运行程序,我将得到不同的结果:
const calcAreaCircle = calcArea(Math.PI+2)
那么部分应用该函数有什么意义,因为它变成了某种全局变量,它是纯粹的,但它不是DETERMINISTIC可以改变的,如果你改变它,其他函数将根据 PI 常数改变结果。
忽略常量——它可以是变量、配置或在现实世界中可以改变的东西。
对我来说,它就像全局数据库对象——如果你改变它,许多函数也会改变输出。
有什么方法可以避免全局范围并使函数成为纯函数,但无需将 PI 传递给每个调用。
如果函数接受超过 2 个参数,那么支持它就变成了噩梦。
谢谢。