在 JavaScript 中,我们可以将函数组合定义为使用带有两个函数 f 和 g 的函数来生成一个新函数:
function o(f, g) {
return function(x) {
return f(g(x));
}
}
这似乎很明显,但我的问题是,运行时解释器/编译器是否实际计算f(g(x))?
假设我们有一些大数据,例如具有许多元素的数组,并且先前计算的先前组合的函数 o 作为f(g(x))是否比未组合的f(g(x))更快?
也许,在这种情况下,o(f, g)仅仅是f(g(x))的宏表达式?
如果它是一个宏,也许,性能没有太大区别?
这可能取决于运行时环境,我对 Chrome/node.js 的 V8 引擎特别感兴趣。
Haskell 作为一种惰性求值策略语言,理论上可以组合函数,我说的对吗?GHC 真的计算组成函数吗?