su37josephxia / frontend-interview

前端面试知识点
MIT License
159 stars 45 forks source link

什么是函数式编程 #131

Open su37josephxia opened 2 years ago

wzl624 commented 2 years ago
RJM1996 commented 2 years ago

函数式编程

什么是函数式编程?

函数式编程就像第三次工业革命,前两次分别为

  1. 命令式编程(Imperative programming)

  2. 面向对象编程(Object Oriented Programming)

函数式编程的着眼点是函数,而不是过程,它强调的是如何通过函数的组合变换去解决问题,而不是通过写什么样的语句去解决问题

函数就是一种描述集合和集合之间的转换关系,输入通过函数都会返回一个输出值

所以函数实际上是一个关系,或者说是一种映射,而这种映射关系是可以组合的,一旦我们知道一个函数的输出类型可以匹配另一个函数的输入,那它们就可以进行组合

函数式编程的特点

函数式编程中的两种常见操作

函数编程工具库

[Ramda](Ramda Documentation)

zhenyuWang commented 2 years ago

函数式编程是一种编程范式,主体思想是所有的状态变换都可以通过函数完成。 在函数式编程中函数是一等公民,这里的函数都要求是纯函数,函数式编程中两种主要操作就是函数组合和柯里化。 组合是指 fn1 实现 a=>b,fn2实现 b=>c,此时需要实现 a=>c,则需要组合 fn1 和 fn2。 柯里化是指将一个多参数的函数转为单参数的函数。

zcma11 commented 2 years ago

函数式编程就是用声明式的方法编写代码,并且没有副作用,只要输入固定,输出永远一样。纯函数式编程是全部依靠函数实现,比如 x = () => 1,add(x(), y())。但把固定的命令式逻辑封装成函数,并且没有副作用的话,也可以属于是函数式编程的一部分。比如对数据进行读值。 findItem = id => map[id] ? Data[map[id]] : null。

shangjunhao commented 2 years ago

什么是函数式编程

发展过程

1、命令式编程

2、面向对象编程

3、函数式编程

个人理解: 命令式编程其实也就是面向过程编程, 在编程时更注重过程, 需要我们来告诉计算机该怎么做, 而函数式编程则更注重结果, 在编程的时候我们不需要关心函数的内部实现, 而只需要告诉计算机我们需要什么样的结果

函数式编程的侧重点就是函数, 是引用数学中函数的概念, 它强调通过函数的组合来实现结果

函数就是描述集合与集合之间的转换关系, 通过输入来得到对应的输出的方法.

函数式编程特点

1、函数是一等公民

2、声明式编程

3、无状态和数据不可变

4、无副作用、纯函数

5、惰性执行