美文网首页
函数式编程从零到一

函数式编程从零到一

作者: 89089答复 | 来源:发表于2018-06-07 15:15 被阅读58次

从零到一:很纯的函数式

从干活的角度看待函数式编程和一般的编程方法

  • 函数addOne是一个函数式编程的写法
  • 函数add是一般写法

function addOne(x) {
    return function (y) {
        return x + y;
    }
};

 addOne(2)(1);
var x = 1 ;var y = 2;
function add(x, y) {
    return x + y;
}
add(1,2);

两者的优缺点:

  • addOne不用考虑作用域的问题,函数内部的变量不会受到外部的影响
  • addOne还能进行再创造,而add函数看似很简单但是写了之后成了一次性的了,比如:
var inc = addOne(1);
inc(2);
  • 此时函数inc();就变成了给所有参数自己增加一的一个新函数,而我们往常的写法是
function addTwo(y){
    return y + 1;
}
  • 这样写了之后我们就没法在其他地方复用,可能是以下原因:
    • 这个y可能会继承了某种属性,移植到其他地方执行不起来
    • 作用域会发生改变
    • 可能还有其他原因,如此这般我们的精力就分配到了关注很多地方,降低了生产率,变相减少了寿命。
  • 再看下面这两个函数
var num = 1;
function addThree(x){
    return x + num ;
}

function addFour(x){
    var num = 1;
    return x + num ;
}
  • 这两个函数第一个就不是函数式编程,第二个是,函数内部不受外界的任何影响,这也是函数从零到一开始学习的可能最重要的一个特点:
    • 函数本身是不是纯洁、透明,不受外界影响的,可以移植的(老师说道还有其他很多特点,就慢慢探索了)。

从一到二:定义过程

  • 看下面这个函数
function addFive(x){
    return x + 1 ;
}
function addSix(y){
    return y + 2 ;
}

function ADD(f,g){
    return function(x){
        return f(g(x));
    }
}
ADD(addFive,addSix)(3);
  • 我们把(3+2)+1=6,整个过程通过函数式实现了出来,使用一个函数把两个函数联合起来一步接着一步的处理参数得到我们想要的结果
  • 如果我们把整个函数想象成一个APP项目得到一个请求request,首先进入中间件“addSix”得到一个结果“5”,然后再把整个结果给到“addFive”这个中间件处理最终给出响应``response--“6”,我们把数据在函数这个类似一截管道中流转的过程就定义了,只需要关注数据的进和出就可以了
  • 在讲解函数式编程入门视频中老师还讲到了两个注意点和一个概念:
    • 构造根函数,像调用库一样去调用,而不要在根函数中添加太多的其他函数
    • 函数ADDf(g())和个g(f())的写法是有讲究的;
    • 柯里化的概念:只传递给函数一部分参数来调用她,让她返回一个函数去处理剩余的参数
  • 以上是学习徐老师的函数式编程入门课笔记,如果有错误之处真诚的希望得到您的指正,老师的社群地址

相关文章

  • 函数式编程从零到一

    从零到一:很纯的函数式 从干活的角度看待函数式编程和一般的编程方法 函数addOne是一个函数式编程的写法 函数a...

  • 从点滴基础探究Kotlin的独特魅力

    0. 序言 从接触Rxjava了解到函数式编程,从了解函数式编程想起Lambda表达式,从Lambda表达式接触到...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • JS函数式编程01--函数式编程概念

    函数式编程概念 函数式编程是一种编程范式。函数式编程的思维方式就是把现实世界的事物和事物之间的联系抽象到程序世界(...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • RxSwift-初探

    函数响应式编程 一:函数式 函数式编程简称FP(Functional Programming),函数式编程就是一种...

  • 从函数式编程到Promise

    译者按: 近年来,函数式语言的特性都被其它语言学过去了。JavaScript异步编程中大显神通的Promise,其...

  • Python中的函数式编程

    函数式编程 说到函数式编程,我们的重点在于为什么要采用函数式编程,而不是什么是函数式编程。 函数式编程的优点:一、...

  • RxJava系列|RxJava简介(一)

    函数响应式编程 函数式编程是一种编程范式。 常见的编程范式有:命令式编程、函数式编程和逻辑式编程。 面向对象就是一...

  • 函数式编程(一)—— 前置知识

    为什么要学函数式编程? 什么是函数式编程?函数式编程和面向对象编程的不同对于函数式编程思维方式的理解: 函数式编程...

网友评论

      本文标题:函数式编程从零到一

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