《函数式编程思维》高质量 pdf 电子书 附源码

《函数式编程思维》高质量 pdf 电子书 附源码

为什么我发现这本书这么值钱?

*从[hosted code]中可以看到(https://github.com/oreillymedia/functional\u thinking),Ford的所有代码示例都附带了单元测试,我发现单元测试对于理解和信任非常重要。

*大多数示例都是用Clojure(JVM的LISP变体)、Groovy(动态JVM语言)、**和**java8(有时使用函数式Java库)以及Scala中的一些语言完成的。我发现语言之间的比较除了给我更多的视角之外,还能提高我的学习和记忆能力。

*Ford引导读者了解基本FP函数的术语组合以及它们在语言上的区别:map(当它被称为“collect”时以及为什么;a.k.a select)、reduce(当它被称为“collect”时;以及它与fold的区别)和filter(a.k.a.where)。

*所有概念后面都有示例代码(或用示例代码介绍)-这不仅仅是一本理论书。

*一些设计模式被审查并转化为它们的FP等价物,后者通常更简单。

*他为递归提供了我读过的最好的解释:

“实际上,[递归]是一种计算机科学方法,通过从自身调用相同的方法来迭代,每次都减少集合,并始终小心地确保有一个退出条件。很多时候,递归会导致易于理解的代码,因为问题的核心是需要在一个不断减少的列表中反复执行相同的操作。”

*福特还对Currying和partial application提供了一个有用的解释(在上下文中更好,但关键在于此):

“Currying描述了将多参数函数转换为单参数函数链的过程。它描述转换过程,而不是转换函数的调用。调用者可以决定要应用多少个参数,从而用较少的参数创建一个派生函数。部分应用程序描述将多参数函数转换为接受较少参数的函数,并预先提供省略参数的值。该技术的名称很贴切:它部分地将一些参数应用于函数,返回一个带有由其余参数组成的签名的函数。在currying和partial应用程序中,您提供参数值并返回一个可以用缺少的参数调用的函数。但是curry一个函数会返回链中的下一个函数,而partial应用程序会将参数值绑定到操作期间提供的值,从而生成一个arity(参数数)较小的函数。当您考虑arity大于2的函数时,这种区别就变得更清楚了。例如,process(x,y,z)函数的完全curried版本是process(x)(y)(z)“

相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

作者:admin,本文链接:https://jiqixuexi.org/832.html

联系我们

QQ 1969801705

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息