美文网首页
函子的概念

函子的概念

作者: friendshi洛初Udo邭 | 来源:发表于2020-11-17 21:53 被阅读0次

一、函子

为什么要学习函子?

到目前为止已经学习了函数式编程的一些基础,但是我们还没有演示在函数式编程中如何把副作用控制在可控范围之内、

异常处理、异步操作等。

什么是Functor?

容器:包含值和值的变形关系,这个变形关系就是函数。

函子:是一个特殊的容器,通过一个普通的对象来实现,该对象具有map方法,map方法可以运行一个函数对值进行处理。

总结:

1、函数式编程的运算不直接操作值,而是有函子完成。

2、函子就是一个实现了map契约的对象。

3、我们可以把函子想象成一个盒子,这个盒子里封装了一个值。

4、想要处理盒子中的值,我们需要给盒子的map方法传递一个处理值的函数(纯函数),由这个函数对值进行处理。

5、最终map方法返回一个包含新值的函子。

二、MAYBE函子

我们在编程过程中可能会遇到很多错误,需要对这些错误做相应处理。

Maybe函子的作用就是可以对外部的空值情况做出处理(控制副作用在允许的范围内)

三、EITHER函子

Either两者中的任何一个,类似于if...else...的处理

异常会让函数变得不纯,Either函数可以用来处理异常

四、IO函子

IO函子中的_value是一个函数,这里把函数作为值处理。

IO函子可以把不纯的操作储存到_value,延迟执行这个不纯的操作,惰性执行,包装当前的操作。

把不纯的操作交给调用者处理。

五、TASK异步执行

异步任务的实现过于复杂,一般使用folktale中的Task

folktale是一个标准的函数式编程库

    和lodash、ramda不同的是,他没有提供很多功能函数

    只提供了一些函数式处理的操作:compose、curry等,一些函子Task、Either、Maybe等。

六、Monad函子

Monad是可以变扁的Pointed函子(具有of方法的函子),可解决IO函子的嵌套问题。

一个函数如果具有join和of两个方法并遵守一定的定律就是一个Monad函子。

相关文章

  • 函子的概念

    一、函子 为什么要学习函子? 到目前为止已经学习了函数式编程的一些基础,但是我们还没有演示在函数式编程中如何把副作...

  • JS函数式编程03--函子

    函子 函子的概念 函子是函数式编程里面最重要的数据类型,也是基本的运算单位和功能单位。函子首先是一个容器,它包含了...

  • 详解函数式编程中的函子

    本文目录:1.什么是函子2.MayBe函子3.Either函子4.Pointed函子5.IO函子6.IO函子存在的...

  • 函数式编程(五)—— 函子

    Functor为什么要学函子?什么是Functor理解Functor总结MyBe函子Either函子IO函子Tas...

  • 【函数式】Monads模式初探——Endofunctor

    自函子 自函子(Endofunctor)是一个将范畴映射到自身的函子(A functor that maps a ...

  • 5.范畴的例子

    接着学习函子,函子是范畴之间的结构保持映射。 给出两个函子,通过逐点复合的方式可以得到一个新的函子,可以验证,这种...

  • 31.限制保持函子

    这一节关注于,与限制结构交换的函子 一个函子称之为保持限制的,当对任意小范畴和任意函子,如果限制存在,那么经过函子...

  • 函子

  • 函数式编程之Promise的奇幻漂流

    函数式编程之Promise的奇幻漂流 上一篇我们讲了同步链式处理数据函子的概念。这一节,我们来讲异步。用到的概念很...

  • 深入理解函数式编程之functor

    在函数式编程中,函子(functor)可以说是一个很基础的概念。当然了,还有一个更基础的概念是函数(functio...

网友评论

      本文标题:函子的概念

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