Skip to content

Latest commit

 

History

History
44 lines (27 loc) · 1.65 KB

functional-programming.md

File metadata and controls

44 lines (27 loc) · 1.65 KB

Functional Programming

编程范式

命令式编程,函数式编程,逻辑式编程

函数式编程 Functional Programming

特点

1. 函数是"第一等公民"

指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。

2. 只用"表达式",不用"语句"

例如:用forEach,map代替for

3. immutable data 不可变数据

函数式编程强调没有"副作用",意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。

4.引用透明

引用透明(Referential transparency),指的是函数的运行不依赖于外部变量或"状态",只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。

高级特性

1.recursing 递归

2.currying 柯里化(curry)

3.lazy evaluation 惰性求值

4.higher order function 高阶函数 (高阶函数只是将函数作为参数或返回值的函数)

优点

1. 代码简洁,开发快速

函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

2. 接近自然语言,易于理解

add(1,2).multiply(3).subtract(4)

3.很有利于进行单元测试(unit testing)和除错(debugging)
4. 易于"并发编程"
5.代码的热升级

函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。