从上面R.map的实现中可以看到,传入_dispatchable的methodsName中,第一个方法名是fantasyland/map。 如果R.map(fn, obj),obj上有fantasyland/map方法,则R.map(fn, obj)等价于 obj['fantasyland/map'](fn)。 那么methodsName中另一个map和这个fantasyland/map有啥区别?为啥还有这么长的一个名字? fantasyland规范 其实fantasyland/map这个名字是有特殊含义的,fantasyland/map没有特定的实现,不过,如果你要实现这么一个方法,你需要遵循fantasyland规范。 结尾 这篇文章不知不觉写得有些长了,从Ramda文档->源码->transducer->fantasyland规范->范畴论->函子,算是自己完整的探索过程,希望能够带给你一些不一样的东西。
代数结构的理论基础 地址:https://github.com/fantasyland/fantasy-land 当你具备了基本的使用能力,想要更上一层楼的时候,就需要重新整合函数式编程的理论体系。