|
@@ -11,21 +11,16 @@
|
|
|
- 软件开发的工具,团队协作软件开发的工具
|
|
|
- 使用工具到顶了,功能复杂度hold人脑不住了,就要换新工具(人脑几十年的时间不会有什么进化)
|
|
|
- 应用软件开发:通过历史看未来(从不同角度看历史变迁),结构化编程(模块化) -> 面向对象 -> 函数式编程;可以看到这个路线就是**对“状态”的限制**使用之路
|
|
|
- - 软硬件发展时间(虚拟机、AI)
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
- 函数式编程主要解决的问题
|
|
|
|
|
|
- - 代码复杂度
|
|
|
+ - 代码复杂度(无代码)
|
|
|
- 线程管理、迭代(责任渡让)
|
|
|
- 分布式计算(RPC(Remote Procedure Call)远程过程调用)
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- **发明机器**与**人编程**两件事
|
|
|
|
|
|
- **莱布尼兹**(与**牛顿**)曾经有两个梦想:
|
|
@@ -151,7 +146,7 @@
|
|
|
- **泛型**(go1.18)
|
|
|
- 尾递归优化
|
|
|
- 可变个数参数的函数+可变类型参数
|
|
|
- - “柯里化”(Currying)
|
|
|
+ - “柯里化”(Currying)(复用)
|
|
|
|
|
|
|
|
|
|
|
@@ -212,7 +207,7 @@
|
|
|
|
|
|
- **函子(Functor)**
|
|
|
|
|
|
- - 函子是范畴之间的关系。可以理解为范畴之间的态射。
|
|
|
+ - 函子是范畴之间的关系。可以**理解为范畴之间的态射**。
|
|
|
- 图中,函数`f`完成object的转换(`a`到`b`),将它传入函子,就可以实现范畴的转换(`Fa`到`Fb`)。
|
|
|
- ![bg2017022211](/Users/xq/Documents/work/book/xq_study/img_readbook/bg2017022211.jpg)
|
|
|
- 范畴之间的态射,得到函子,由函子之间的态射,得到自然变换
|
|
@@ -237,7 +232,7 @@
|
|
|
- 自然转换是两个函子之间的关系。函子描述“自然构造(natural constructions)”,自然转换描述两个这样构造的"自然同态(natural homomorphisms)"。
|
|
|
|
|
|
|
|
|
-- 编程实践
|
|
|
+- 函数式编程实践
|
|
|
|
|
|
- Map-Reduce-Filter 模式
|
|
|
|