函数式编程原则
just mapping
- not “do” or “calculate”
- denotational not operational (指示语义而不是操作语义)
immutablility
- no side effecs 没有副作用
函数式编程优点
不变性
通常,函数式编程语言没有可变变量,一旦赋了值,就不能改变。这让代码行为更容易预测,并且减少了系统错误的数量,从而提高了系统的稳定性。
容错
- 容错是指即使出现错误,系统可以继续运行。有些函数式编程语言(如 Erlang)默认具有容错功能。
- 任意顺序结果都是一样的。
易于并行化,高度分布式
函数式编程语言可以让你创建高度并行化和高度分布式的系统。用于迭代的内置函数(如 map 和 reduce)在区块链开发中发挥作用。
函数式编程模式
Monad
Monad 是函数式编程的一种实现模式,表示将一个运算过程,通过函数拆解成互相连接的多个步骤的运算。通过提供下一步运算所需的函数进行下一步运算。
半群Semigroup
函数式编程中一个重要概念是组合, 一个聚合体或复杂元素是由很多小部分组合而成。但是不是所有的组合形式是一样的。
Map & Reduce
- 通过map能遍历数组结构内部数据并且转换成想要的对象;
- 通过reduce能遍历数组转换成目标对象。