函数式编程

2019-10-15 10:10:1710/1/2021, 3:34:43 AM

WHAT

  • 本质上,函数式编程只是范畴论的运算方法,跟数理逻辑、微积分、行列式是同一类痛惜,都是数学方法,只是碰巧它能用来写程序

  • FP 的目的是使用函数来抽象作用在数据之上的控制力和操作,从而在系统中消除副作用并减少对状态的改变

  • OOP 通过封装使得代码更易理解,FP 通过最小化变化使得代码更易理解

    ps: 为什么函数式编程要求函数必须是纯的,不能有副作用?因为它是一种数学运算,原始目的就是求值,不做其他事情,否则就无法满足函数运算法则了

WHY

  • 使用纯函数的代码绝不会更改或破环全局状态,有助于提高代码的可测性和可维护性
  • FP 采用声明式的风格,易于推理,蹄盖代码的可读性
  • 函数式编程将函数视为积木,通过高阶函数来提高代码的模块化和可重用性
  • 可以利用响应式编程组合各个函数来降低事件驱动程序的复杂性

HOW

  • 纯函数(pure function) 相同的输入总是得到相同的输出,不依赖外部环境,完全做到"自给自足"
  • 合成(compose) 如果一个值要经过多个函数才能编程另外一个值,就可以把所用中间步骤合并成一个函数,这叫做函数的合成(compose)
  • 柯里化(curry) 在 compose 时,如果函数有多个参数 compose 将会变得非常麻烦,所谓柯里化就是把一个多参数的函数转化为单参数的函数
  • 函字(functor) FP 里基本的运算单位和功能单位,可以将一个容器转换为另一个容器。任何具有 map 方法的数据结构都可当作函子的实现