标签函数式编程下的文章

网络埋伏纪事 发布于 05月08, 2017

【译】组合软件:6. 函子和范畴

原文:http://www.zcfy.cc/article/2698

一个函子(Functor)是可以映射的某个事物。也就是说,函子是一个带有接口的容器,这个接口可以用于将一个函数应用到容器内的值。看到函子(functor)这个词时,就应该想到可映射

术语函子来自范畴论。在范畴论中,函子是范畴之间的映射。粗略地讲,范畴(Category)是一组事物,这里每个事物都可以是任何值。在代码中,函子有时候被表示为一个带有 .map() 方法的对象,这个 .map() 方法用来将一组值映射为另一组值。

函子为其内部的零到多个事物提供了一个盒子,以及一个映射接口。数组就是函子的一个不错的例子,但是很多其它类型的对象也可以被映射,包括单值对象、流、树、对象等等。

对集合(数组、流等)而言,.map() 通常会遍历集合,并且将指定函数应用到集合中的每个值,但是并非所有函子都可以迭代。

阅读全文 »

网络埋伏纪事 发布于 05月05, 2017

【译】组合软件:5. Reduce

原文:http://www.zcfy.cc/article/2697

Reduce(亦称:fold、accumulate,译为归纳)实用程序通常用于函数式编程中,让我们可以遍历一个列表,将一个函数应用到一个累加的值以及列表中的下一个条目,直到迭代完成,并且返回累加值。用 reduce 可以实现很多有用的东西。如果要在一个条目集合上执行一些重要的处理,那么 reduce 就是最优雅的方式。

阅读全文 »

网络埋伏纪事 发布于 05月05, 2017

【译】组合软件:3. 函数式程序员的 JavaScript 介绍

原文:http://www.zcfy.cc/article/2695

对于不熟悉 JavaScript 或者 ES6+ 的人来说,本文的目的是做一个简单介绍。不管你是初学者,还是有经验的 JavaScript 开发者,都可以学到一些新东西。如下的内容只是蜻蜓点水,让你兴奋起来。如果想了解更多,就必须更深层次探索了。后面还有更多东西。

阅读全文 »

网络埋伏纪事 发布于 05月05, 2017

【译】组合软件:2. 为什么要在 JavaScript 中学习函数式编程?

原文:http://www.zcfy.cc/article/2694

请忘掉你认为你知道的有关 JavaScript 的任何东西,以初学者心态来接触这份资料。为帮助你这样做,我们打算从头开始复习 JavaScript 的基础知识,就好像你以前从来没有看到过 JavaScript 一样。如果你是初学者,那就走运了。最后从零开始探索 ES6 和 函数式编程!希望所有新概念在这个过程中都被解释到了 - 但是别指望会太舒适。

阅读全文 »