无论 python, ruby, 还是 erlang, lua, 这几个比较新锐的语言,都支持函数式编程。
函数式编程到底具有哪些特点? 相对于传统的命令式语言,其优势在什么地方?
函数式编程,有如下几个特点:
1、 函数是第一类型。
函数像其它数据类型一样,可以被赋值,可以当做参数,也可以当做函数的返回值。
其实, C语言的函数,实质就是一种指针类型,因此我们可以说,C语言也是支持函数式编程的。
2、 函数的执行结果,只与传入的参数相关。
也就是说,只要传入的参数不变,那么函数的执行结果就是一定的,而不受其它条件影响。
这就要求我们,在函数内部,不要访问全局变量。
这点实质上是函数式编程的核心。
这个用术语表示,叫做“引用透明性”
3、 变量一旦被赋值,就永远不可修改。
C 语言如何表示?
4、 惰性计算
将一个函数绑定到一个变量的时候,并不立刻计算; 而是在使用的时候才去计算。
5、 闭包
在其它函数内部定义的函数
6、 高阶函数
使用其它函数作为参数的函数,称为高阶函数
7、 匿名函数 lambda
函数式编程到底具有哪些特点? 相对于传统的命令式语言,其优势在什么地方?
函数式编程,有如下几个特点:
1、 函数是第一类型。
函数像其它数据类型一样,可以被赋值,可以当做参数,也可以当做函数的返回值。
其实, C语言的函数,实质就是一种指针类型,因此我们可以说,C语言也是支持函数式编程的。
2、 函数的执行结果,只与传入的参数相关。
也就是说,只要传入的参数不变,那么函数的执行结果就是一定的,而不受其它条件影响。
这就要求我们,在函数内部,不要访问全局变量。
这点实质上是函数式编程的核心。
这个用术语表示,叫做“引用透明性”
3、 变量一旦被赋值,就永远不可修改。
C 语言如何表示?
4、 惰性计算
将一个函数绑定到一个变量的时候,并不立刻计算; 而是在使用的时候才去计算。
5、 闭包
在其它函数内部定义的函数
6、 高阶函数
使用其它函数作为参数的函数,称为高阶函数
7、 匿名函数 lambda