第五章 由函数构建函数

作者: 549b968de8fa | 来源:发表于2017-03-26 14:50 被阅读70次

5.1 概念

我们前面讲了很多,同时也讲到了由函数构建函数的概念。

在函数式编程中,函数是构建大型函数或项目的最小单位,就像分子是独立存在而保持物质化学性质的最小粒子一样。

这里就不再重复地叙述这一观点了,掌握住思想,这就足够了。你所需要做的就是像切面包一样,把一个大型函数切割成你所需要的状态就足矣。

5.2 函数柯里化

函数柯里化的概念是在函数式编程语言 Haskell 中最基本的要素,在这一门语言中,就要使用柯里化,而在 JavaScript 中,这真的重要吗?

这也是我一直在问自己的问题,究竟什么样的地方,才能真正用到这一技术。为了技术而技术,将会导致一个问题,那就是更多的 BUG 以及更多的维护。

在团队协作中,将函数切割成无数的小函数,这有利于代码的维护和扩展,而柯里化呢?至少在 ES6 大行其道的现在,我看不出它的优势在何处。

那么什么是柯里化?

函数柯里化就是为每一个逻辑参数返回一个新函数。

多说无益,我们来举一个例子吧:

function add(x, y, z) {
  return x + y +z;
}

这是我们平时的一般写法,那么柯里化是什么样子的呢?

function add(x) {
  return function(y) {
    return function(z) {
      return x + y + z;
    }
  }
}

add(1)(2)(3);  // 6

这么写是不是很丑呢?我不知道。但是这样会把问题弄得让人很费解不是吗,接着呃我是用 ES6 来重构上述代码:

const add = (x, y, z) => x + y + z;

const add = x => y => z => x + y + z;

你能说,柯里化后的代码就比上面的更好吗?这一点我真的不是很清楚。

到目前为止,我相信你应该知道了柯里化是什么,但是会不会用,为什么用需要想的很清楚。对于我来说,柯里化真的不适合 JavaScript 这门语言的大多数情况,这只会使得我们为了使用它而使用它。

还记得我们一开始就提到的吗?函数式编程为我们提供了一套思路,但这并不代表我们就要摒弃其它的东西。

真正的大师是选择合适的情况使用合适的手段,而高手则是为了炫技而陷入杀鸡焉用宰牛刀的境地中。

相关文章

  • 第五章 由函数构建函数

    5.1 概念 我们前面讲了很多,同时也讲到了由函数构建函数的概念。 在函数式编程中,函数是构建大型函数或项目的最小...

  • 基于收支模拟花呗还款情况 2019-05-29

    收支情况模拟构建思路:1、构建税收函数2、构建专项扣除函数3、构建社保函数4、构建奖金函数5、构建10年(即120...

  • Spark SQL原理之Aggregate实现原理

    聚合函数的分类 声明式聚合函数: 可以由Catalyst中的表达式直接构建的聚合函数,也是比较简单的聚合函数类型,...

  • 论C++对象的构造和释放

    构造函数是一个很特别的函数,需与对象同名,并且在对象构建过程中由编译器自动插入调用. 从构造函数的定义可以看出一个...

  • (九)逻辑斯蒂回归(用于分类)

    一、逻辑斯蒂回归 (1)构建预测函数 第一步,构建一个预测函数(概率,分类问题,变成了概率问题) 线性回归函数 ...

  • 使用ComplexHeatmap包绘制热图

    加载所需R包 构建测试数据集 使用Heatmap函数绘制热图 使用HeatmapAnnotation函数构建注释对...

  • Python学习笔记(五)

    第五章 函数和代码复用 函数的基本使用 函数的定义 函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过...

  • Function

    Function与Object的关系 结论:Function和Object是同级关系,都是由内置的工厂函数构建的,...

  • 递归函数的应用

    递归函数 把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。

  • C Primer Plus编程练习(2.11,P32)

    1.C语言的基本模块是什么? C程序是由一个或多个函数主城,必须有main()函数。函数由函数头和函数体组成。函数...

网友评论

    本文标题:第五章 由函数构建函数

    本文链接:https://www.haomeiwen.com/subject/ctlkottx.html