函数式编程

tech2022-09-14  117

函数式编程与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式。 最主要的特征是,函数是第一等公民。 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapReduce 算法。 只有纯的、没有副作用的函数,才是合格的函数。

面向对象的世界里我们是把事物抽象成类和对象,然后通过封装、继承和多态来演示他们之间的关系。 函数式的世界里把世界抽象成事物和事物之间的关系,用这种方式实现世界的模型。

面向对象是命令式编程。

Lambda是函数式编程。

命令式: x=x+1

函数式: add(x){     return x+1; }

函数式编程的关键点: 范畴: 彼此之间存在某种关系的概念、事物、对象等等,都构成"范畴"。随便什么东西,只要能找出它们之间的关系,就能定义一个"范畴"。 函子是函数式编程里面最重要的数据类型,也是基本的运算单位和功能单位。 函子: 它首先是一种范畴,也就是说,是一个容器,包含了值和变形关系。比较特殊的是,它的变形关系可以依次作用于每一个值,将当前容器变形成另一个容器。

参考: http://www.ruanyifeng.com/blog/2017/02/fp-tutorial.html https://www.jianshu.com/p/ebf470abbd7c https://www.zhihu.com/question/28292740?sort=created

最新回复(0)