加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

手把手介绍函数式编程

发布时间:2021-03-23 13:19:05 所属栏目:传媒 来源:互联网
导读:。这本书由浅入深循序渐进地对 FP 做了体系讲解,力荐! 手把手介绍函数式编程:从命令式重构到函数式 有很多函数式编程文章讲解了抽象的函数式技术,也就是组合( composition )、管道( pipelining )、高阶函数( higher order function )。本文希望以

。这本书由浅入深循序渐进地对 FP 做了体系讲解,力荐!

手把手介绍函数式编程:从命令式重构到函数式

有很多函数式编程文章讲解了抽象的函数式技术,也就是组合( composition )、管道( pipelining )、高阶函数( higher order function )。本文希望以另辟蹊径的方式来讲解函数式:首先展示我们平常编写的命令式而非函数式的代码示例,然后将这些示例重构成函数式风格。

本文的第一部分选用了简短的数据转换循环,将它们重构成函数式的 map 和 reduce 。第二部分则对更长的循环代码,将它们分解成多个单元,然后重构各个单元成函数式的。第三部分选用的是有一系列连续的数据转换循环代码,将其拆解成为一个函数式管道( functional pipeline)。

示例代码用的是 Python 语言,因为多数人都觉得 Python 易于阅读。示例代码避免使用 Python 范的( pythonic )代码,以便展示出各个语言通用的函数式技术: map 、 reduce 和管道。所有示例都用的是 Python 2 。

  • 解函数式特质的指南针
  • 不要迭代列表,使用 map 和 reduce
  • 声明方式编写代码,而非命令式
  • 现在开始我们可以做什么?

理解函数式特质的指南针

当人们谈论函数式编程时,提到了多到令人迷路的『函数式』特质( characteristics ):

  • 人们会提到不可变数据( immutable data )、一等公民的函数( first class function )和尾调用优化( tail call optimisation )。这些是 有助于函数式编程的语言特性 。
  • 人们也会提到 map 、 reduce 、管道、递归( recursing )、柯里化( currying )以及高阶函数的使用。这些是 用于编写函数式代码的编程技术 。
  • 人们还会提到并行化( parallelization )、惰性求值( lazy evaluation )和确定性( determinism )。这些是 函数式程序的优点 。

无视这一切。函数式代码的核心特质就一条: 无副作用 ( side effect )。即代码逻辑不依赖于当前函数之外的数据,并且也不会更改当前函数之外的数据。所有其他的『函数式』特质都可以从这一条派生出来。在你学习过程中,请以此作为指南针。不要再迷路哦,兄die~

这是一个非函数式的函数:

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读