函子: 是一个特殊的容器,通过一个普通的对象来实现,该对象具有map方法,map 方法可以运行一个函数对值进行处理
// Functor
// 定一个类
class Container{
constructor(value){
this._value= value
}
// 向外提供方法
map(fn){
return new Container(fn(this._value))
}
}
let r= new Container(5)
.map(x=> x+1) //返回还是Container对象
.map(x => x*x)
console.log(r); // Container { _value: 36 }
函子有: MayBe函子,Either函子 ,Either函子 , IO 函子, Folktale , Task 函子, pointed 函子,Monad函子,后面有时间再添加