functional programming

函数式编程随想(一)——函数式编程的好处及柯里化的意义

这篇博客主要是为了记录我最近关于函数式编程的好处,以及柯里化的作用的一些思考。 首先来举个简单的例子,如果我们有一组数,比如[1,2,3,4,5,6],我们想取其中的奇数,然后把这些奇数取平方,并返回这个数组,即,我们期望的结果是[1,9,25],那么应该怎么写呢? 最简单的写法就是来一次循环: list = [1, 2, 3, 4, 5, 6]; result = []; for(idx = 0; idx < list.length; idx ++) { if (list[idx] % 2 == 1) { result = result.concat(list[idx] * list[idx]); } } console.log(result); // [1, 9, 25] 真的,我劝你不要这么写。 “为什么不?课本上都是这么写的啊!” 这么写确实正确,而且符合需求,但是看看我们做了多少额外的工作!我们不仅需要描述具体的业务逻辑(list[idx] % 2 == 1和list[idx] * list[idx]),还要操心如何遍历每个元素(for循环)、如何取出当前要处理的值(维护idx变量,以及用list[idx]来取值),以及如何保存结果。 对于这么一个简单的任务我们几乎在基础工作上用了一半以上的代码,代价太高了。 有没有简单的写法呢?有啊! // JS code list = [1, 2, 3, 4, 5, 6]; result = list.filter((x) => x % 2).