首页
学习
活动
专区
工具
TVP
发布

【基于 JS 的函数式编程 - 4】子 | MayBe子 | Monad

概念 子 定义: 子是一个普通对象,它实现了map函数,在遍历每个对象值的时候生成一个新对象。即,子是一个实现了 map 契约的对象! 简单理解:子是一个持有值的容器。...Container = function(val) {this.value=val;} let testVal = new Container(3); 这样一来,Container持有了内部的值,我们传入的任何js...Monad是一个含有chain方法的子 你可以通过添加一个chain方法(或者说是join方法)扩展MayBe子,使其成为一个Monad子。...那么,我们就可以知道 Monad 子的一大特点就是能够避免深层嵌套,只要提供下一运算所需要的的函数,就能将函数拆解成互相连接的多个步骤,自动进行下去,并且每次都是只返回一个单层的子。...这个子有一个 flatMap 方法,即降维的能力。

14220
您找到你想要的搜索结果了吗?
是的
没有找到

Applicative

Applicative 定律 Application 子是一种加强的子,在 Haskell 的 Control.Applicative 模块中定义了一个 Applicative 类型类: class...fmap f x applicative 子的用途很明确,就是为了取出第一个子值中的函数,应用到第二个子值的值上,上述定律基本可以保证只是做了这件事,当然其他还有一些定律,就不细说了,列在这里大家看看就好...至于的话,先考虑函数作为普通子的情况,我们知道子值是一个包涵上下文的值,当函数作为子值时,从这个上下文中取值的操作就是将一个参数传递给该函数,然后产生一个值,所以函数作为Functor类型类的实例时是这样的...接收一个函数和一个子值,取出子值中的值传递给函数,然后返回一个子值。...那也同理,它接收两个子值,返回一个子值,当函数作为子值时,要先分别取出 f 中的值(函数)和 g 中的值,分别将一个参数 x 传递给它们,再将 g x 作为参数传递给 f x(由于 Haskell

70310

编程(17)-泛状态-State In Action

对OOP编程人员来说,泛状态State是一种全新的数据类型。我们在上节做了些介绍,在这节我们讨论一下State类型的应用:用一个具体的例子来示范如何使用State类型。..._)) => machine.copy(locked = true, candies = nCandy - 1) 8 } 9 } 这个transition函数采用了泛状态维护风格...对比起来,下面的例子就可以说是真正的泛编程风格了。同样针对以上的贩售机模拟逻辑要求,我们将用典型的泛风格来编程。...在以上这个例子里我们采用了泛编程风格:用类型匹配方式进行了函数组合,虽然说代码可能简单了,但清洁可能就说不上了。...需要用类型匹配(type line-up)来分析理解,也就是要再熟悉多点泛编程思考模式。

72480

编程(16)-泛状态-Functional State

初接触泛状态觉着很不习惯。...主要是在使用State数据类型时很难理解其中的原理,特别是泛状态变迁机制(state transition mechanism):怎么状态就起了变化,实在难以跟踪。...RNG简单描述了泛方式的状态变迁及支持状态变迁所需要的数据结构和操作函数款式。    ...再次聚焦一下我们设计State类型的目标:State类型不但可以使我们像设计其它类型一样封装一个较低阶类型元素并且提供一套状态变迁机制,而且状态变迁机制是泛式的,自然隐性的。...泛状态是一种隐形自动的变迁,那么如果我们需要打乱既定流程,手动设定或者临时读取状态时该怎么办呢?

848100

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券