函数式编程
函数相关
函数式编程基础
- lodash
- 纯函数
相同的输入总是得到相同的输出
- 柯里化
- 当一个函数有多个参数的时候先传递一部分参数调用它
- 然后返回一个新的函数接收剩余的参数,返回结果
- 多元函数转为单元函数
- 管道
- 函数组合
函子
容器:包含值和值的变形关系(这个变形关系就是函数)
函子:是一个特殊的容器,通过一个普通的对象来实现,
该对象具有 map 方法,map 方法可以运行一个函数对值进行处理(变形关系)
总结
函数式编程的运算不直接操作值,而是由函子完成
函子就是一个实现了 map 契约的对象
我们可以把函子想象成一个盒子,这个盒子里封装了一个值
想要处理盒子中的值,我们需要给盒子的 map 方法传递一个处理值的函数(纯函数),由这 个函数来对值进行处理
最终 map 方法返回一个包含新值的盒子(函子
- MayBe
MayBe 函子的作用就是可以对外部的空值情况做处理(控制副作用在允许的范围)
- Either
Either 两者中的任何一个,类似于 if...else...的处理 异常会让函数变的不纯,Either 函子可以用来做异常处理
- IO
IO 函子中的 _value 是一个函数,这里是把函数作为值来处理
IO 函子可以把不纯的动作存储到 _value 中,延迟执行这个不纯的操作(惰性执行),包装当前的操 作纯
把不纯的操作交给调用者来处理
- Task
- Pointed
Pointed 函子是实现了 of 静态方法的函子 of 方法是为了避免使用 new 来创建对象,更深层的含义是 of 方法用来把值放到上下文 Context(把值放到容器中,使用 map 来处理值
- Monad