函数式编程

109 阅读2分钟

函数式编程

函数相关

  • 函数是一等公民
  • 高阶函数
  • 闭包

函数式编程基础

  • lodash
  • 纯函数 相同的输入总是得到相同的输出
  • 柯里化
    • 当一个函数有多个参数的时候先传递一部分参数调用它
    • 然后返回一个新的函数接收剩余的参数,返回结果
    • 多元函数转为单元函数
  • 管道
  • 函数组合

函子

容器:包含值和值的变形关系(这个变形关系就是函数) 
函子:是一个特殊的容器,通过一个普通的对象来实现,
该对象具有 map 方法,map 方法可以运行一个函数对值进行处理(变形关系) 
  • Functor
总结
函数式编程的运算不直接操作值,而是由函子完成 
函子就是一个实现了 map 契约的对象 
我们可以把函子想象成一个盒子,这个盒子里封装了一个值 
想要处理盒子中的值,我们需要给盒子的 map 方法传递一个处理值的函数(纯函数),由这 个函数来对值进行处理 
最终 map 方法返回一个包含新值的盒子(函子
  • MayBe MayBe 函子的作用就是可以对外部的空值情况做处理(控制副作用在允许的范围)
  • Either Either 两者中的任何一个,类似于 if...else...的处理 异常会让函数变的不纯,Either 函子可以用来做异常处理
  • IO
IO 函子中的 _value 是一个函数,这里是把函数作为值来处理 
IO 函子可以把不纯的动作存储到 _value 中,延迟执行这个不纯的操作(惰性执行),包装当前的操 作纯 
把不纯的操作交给调用者来处理
  • Task
    • folktale
  • Pointed Pointed 函子是实现了 of 静态方法的函子 of 方法是为了避免使用 new 来创建对象,更深层的含义是 of 方法用来把值放到上下文 Context(把值放到容器中,使用 map 来处理值
  • Monad