__ _ _
/ / __ _ _ __ ___ | |__ __| | __ _ ___
/ / / _` || '_ ` _ \ | '_ \ / _` | / _` |/ __|
/ /___| (_| || | | | | || |_) || (_| || (_| |\__ \
\____/ \__,_||_| |_| |_||_.__/ \__,_| \__,_||___/
参考书目与文献
- 《JavaScript函数式编程》作者 Michael Fogus, ISBN 9787115390608, 人民邮电出版社
- 《JavaScript函数式编程指南》作者 Luis Atencio, ISBN 9787115462046, 人民邮电出版社
- 《Category Theory For Programmers》作者 Bartosz Milewski, ISBN 9781518403507, ImageWrap Press
- 《An Introduction to Category Theory》作者 Harold Simmons, ISBN 9780511863226, Cambridge University Press
注意:这个项目是用来学习交流 FP
范式的,请不要用于企业的生产环境。当然,个人的学习项目请随意使用。
npm install
npm run test
npm run docs
npm run build
编译完成后大家可以把 dist/lambdas.min.js
文件引入到项目中使用。
由于水平有限,有错误的地方欢迎提 issues
指出,非常期待能和大家一起交流
- Tree#map 树的自然变换
遍历
Tree
的常见方法是用递归的方式,但是用这种方式写出来的代码往往比较难以理解(虽然递归也是函数式编程中的一部分),为了解决这个问题,我想到了一个办法:既然Array
、Map
、Tree
、Object
等等都是一种数据的容器,容器可以通过映射来变形为另一种容器,也可以通过映射来改变容器内的数据。那么Array
有一个map
方法,Tree
也可以定义一个map
方法,该方法与Array#map
一样,接收一个迭代函数f
,然后将容器中的每一项数据v
作用与函数f
,这样就得到了结果r
,最后将结果集放到一个新的容器中返回,这样就得到了一个新的Tree
。
... 还有其他的一些想法,等有空再写,太忙了:)