Open su37josephxia opened 2 years ago
函数式编程就像第三次工业革命,前两次分别为
命令式编程(Imperative programming)
面向对象编程(Object Oriented Programming)
函数式编程的着眼点是函数,而不是过程,它强调的是如何通过函数的组合变换去解决问题,而不是通过写什么样的语句去解决问题
函数就是一种描述集合和集合之间的转换关系,输入通过函数都会返回一个输出值
所以函数实际上是一个关系,或者说是一种映射,而这种映射关系是可以组合的,一旦我们知道一个函数的输出类型可以匹配另一个函数的输入,那它们就可以进行组合
[Ramda](Ramda Documentation)
函数式编程是一种编程范式,主体思想是所有的状态变换都可以通过函数完成。 在函数式编程中函数是一等公民,这里的函数都要求是纯函数,函数式编程中两种主要操作就是函数组合和柯里化。 组合是指 fn1 实现 a=>b,fn2实现 b=>c,此时需要实现 a=>c,则需要组合 fn1 和 fn2。 柯里化是指将一个多参数的函数转为单参数的函数。
函数式编程就是用声明式的方法编写代码,并且没有副作用,只要输入固定,输出永远一样。纯函数式编程是全部依靠函数实现,比如 x = () => 1,add(x(), y())。但把固定的命令式逻辑封装成函数,并且没有副作用的话,也可以属于是函数式编程的一部分。比如对数据进行读值。 findItem = id => map[id] ? Data[map[id]] : null。
1、命令式编程
2、面向对象编程
3、函数式编程
个人理解: 命令式编程其实也就是面向过程编程, 在编程时更注重过程, 需要我们来告诉计算机该怎么做, 而函数式编程则更注重结果, 在编程的时候我们不需要关心函数的内部实现, 而只需要告诉计算机我们需要什么样的结果
函数式编程的侧重点就是函数, 是引用数学中函数的概念, 它强调通过函数的组合来实现结果
函数就是描述集合与集合之间的转换关系, 通过输入来得到对应的输出的方法.
1、函数是一等公民
2、声明式编程
3、无状态和数据不可变
4、无副作用、纯函数
5、惰性执行