编程语言发展的里程碑之一即为引入了模块化特性,这不但降低了编写高质量代码的难度,也降低了程序开发维护的难度,其中,函数式编程在程序的模块化方面就有着突出的作用。
引言
定义:函数式编程,英文 Functional programming(简称 FP),是一种编程范式/思想,其中,函数为第一类对象(First-class object),可以当作参数传入给其他函数,且可以作为函数的返回值。其他编程范式包括面向对象编程和面向过程编程等。
在运用函数式编程解决问题时,程序的运行状态在纯函数之间传递,求解时,我们在意的不是函数执行的过程而是函数执行的结果,通过相对简单小型的函数计算结果,逐步进行复杂的运算。
函数式编程的特点(优点)主要有以下两点:
- 数据一旦定义,即不可变(immutable data)
- 无副作用(no side-effects),每个函数仅进行结果的求导,而不改变变量的任何状态(side-effects),事实上,该函数为纯函数
名词解释
纯函数(pure function):
- 具有相同的输入参数时,必定产生相同的输出;
- 无任何函数副作用,如“触发事件”,“更改输入参数值”等。
复合函数(Function composition):
- 我们有函数 f(x)和 g(x),那么 f(g(x))即称为 f(x)和 g(x)的复合函数
为什么需要函数式编程?
随着程序越来越复杂,程序的架构会变得越来越重要。一个合理的架构不但能够帮助程序员编写、调试代码,还能减少程序出 bug 的几率,并且提高程序的可复用性。而模块化即是程序架构发展的重要一步,其中,函数式编程就在其中充当着“胶水”的作用,使用复合函数而不是命令执行流粘合各个小的函数模块。
注意函数式编程只是一种思维方式,视所有程序为函数的组合。