ToC
核心概念
函数组合,也叫饲养函数(compose)。为什么会叫饲养函数?可以理解为将其他的小的纯函数、偏函数、柯里化函数喂养给最后的一个大的功能函数,让这个功能变膘变壮,以完成最后的功能。举个例子:
对比直接调用的方法,函数组合的好处是跟容易进行函数复用,而 compose
函数的定义如下:
很简单的一个函数对不对,实际上核心的代码是第三行的 f(g(x))
,它通过自右向左组合函数并调用最后传入参数执行,得到最终的效果,这种组织代码的方式,被叫做 左倾
。简单来讲,左倾
就是将一个函数的执行放在另一个函数调用的 ()
中,将执行的函数返回值作为下一个执行函数的参数。以上 compose
函数虽然能满足需求,但是如果想要组合的函数再多一个的话,它就不得不进行修改了,所以这肯定不是最终方案。
改造函数
我们再对这个函数传入更多函数进行测试:
结合律(Associativity)
结合律在 JS 编程中同样是一个比较少见的概念,它与数学中的加法结合律概念一致
加法结合律:三个数相加,先把前面两个数相加,再加第三个数,或者先把后面两个数相加,再和第一个数相加,它们的和不变。
结果如上,不管将他们的值怎么组合,只要函数传入的顺序不变,那么最终的结果也是不会变的。
Pointfree
Love means never having to say you’re sorry.
爱意味着永远不用说抱歉。
Pointfree style means never having to say your data.
而pointfree
意味着你永远不用主动表明你的数据。