Box 容器
我们先来了解容器的概念,以便我们更好的理解Functor(函子)
在生活中,我们的杯子、书包、收纳盒都是容器,用来装东西的。
在编程中,容器不只是用来装东西的了,它提供一些方法让我们操作容器中的东西,且并不影响容器中的东西,并返回我们需要的结果
是的,这个容器需要我们自己编写代码来实现,下面来看一个小例子
const Box = function (x) {
this._val = x;
}
Box.of = x => new Box(x)
Box.prototype.typeOf = function (f) {
const type = Object.prototype.toString.call(this._val).slice(8, -1);
// 返回 Box.of 既产生新的被容器包裹的对象,也方便链式调用
return Box.of(f(type));
}
Box.of('456')
.typeOf(res => console.log(res))
Functor 函子
Functor 是一种特殊的容器,是实现了 map 并遵守一些特定规则的容器类型。
留出
再谈函数组合
回顾上一节我们使用组合的方式,是利用 compose
函数,将各个函数组合起来。
这一次我们采用链式调用的方式,来实现函数组合