[关闭]
@JunQiu 2018-12-18T21:20:57.000000Z 字数 1635 阅读 1216

Functional Programming Introduction浅读

summary_2018/12 designIdea


1、背景

2、简介

  1. // 一个累积器的例子:
  2. // 平时实现
  3. function fact (n) {
  4. let res = 0
  5. for (let i = 0; i <= n; i++)
  6. res *= i
  7. return res
  8. }
  9. // fp
  10. function fact1 (n) {
  11. if (n === 1) return 1
  12. return n * fact1(n - 1)
  13. }
  14. // 我们可以看到,在fp中,我们没有使用循环,没有使用中间变量来存储中间值,实现过程更接近人的思维,即数学思想,而不是机器执行过程。

3、FP的特性

3.1、函数是"第一等公民"
  1. 即:
  2. // fp
  3. const a = function fact1 (n) {
  4. if (n === 1) return 1
  5. return n * fact1(n - 1)
  6. }
3.2、只用表达式、不用语句
3.3、没有副作用
3.4、不修改状态、变量
  1. // fp
  2. const a = function fact1 (n) {
  3. if (n === 1) return 1
  4. // 在参数中保存状态
  5. return n * fact1(n - 1)
  6. }
3.5、引用透明
3.6、高级特性(重要)

4、FP的优点

4.1、代码简洁,开发快速
4.2、接近自然语言,易于理解
  1. // 更偏向于人的思维而不是机器
  2. // (1 + 2) * 3 - 4
  3. 实现:add(1,2).multiply(3).subtract(4)
4.3、更方便的代码管理
4.5、易于"并发编程"
4.6、代码的热升级

5、参考

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注