加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 你叫什么包裹在一个monad的数据?

发布时间:2020-12-16 09:38:43 所属栏目:安全 来源:网络整理
导读:在演讲和写作中,我一直想要参考一个monad中的数据,但是我不知道该怎么称呼。 例如,在Scala中,传递给flatMap的函数的参数被绑定到…中…那个monad中的东西。在: List(1,2,3).flatMap(x = List(x,x)) x绑定到我没有一个字的东西。 复杂的事情有点,传递给
在演讲和写作中,我一直想要参考一个monad中的数据,但是我不知道该怎么称呼。

例如,在Scala中,传递给flatMap的函数的参数被绑定到…中…那个monad中的东西。在:

List(1,2,3).flatMap(x => List(x,x))

x绑定到我没有一个字的东西。

复杂的事情有点,传递给克莱斯利箭头的论点不一定会绑定到monad内的所有数据。使用List,Set,Stream和其他许多monads,flatMap会多次调用Kleisli箭头,每次将x绑定到monad中的一个不同的数据。或者也许甚至不是“数据”,只要遵循monad法则。不管它是什么,它被包裹在monad中,flatMap将它传递给你,没有包装,也许是一次一个。我只想知道什么叫x指的相关内部的monad的东西,至少在一部分,所以我可以停止所有这些愚蠢的语言。

这个东西/数据/价值/东西有什么标准或常规术语吗?

如果没有,“糖果”怎么样?

解决方法

试图说“x被绑定”是设置你的失败。让我解释一下,并指导你在谈论这些事情时,更好地表达自己的方式。

假设我们有:

someList.flatMap(x => some_expression)

如果我们知道someList具有List [Int]类型,那么我们可以安全地说,在some_expression内部,x被绑定到Int类型的值。请注意,“在某些表达之内”。这是因为,给定someList = List(1,3),x将依次接受每个的值:1,2和3。

考虑一个更广义的例子:

someMonadicValue.flatMap(x => some_expression)

如果我们对某个MonadicValue一无所知,那么我们不太了解some_expression是如何被调用的。它可以运行一次,或三次(如上述示例),或者懒惰或异步地,或者可以安排一次一次MonadicValue完成(例如期货),或者可以永远不使用(例如空列表,无)。 Monad界面不包括关于什么时候或如何使用一些表达式的推理。所以你可以说什么x将被限制在some_expression的上下文,无论何时,然而some_expression恰好被评估。

所以回到例子。

someMonadicValue.flatMap(x => some_expression)

你正在试图说“x是一些MadadicValue的???”。而你正在寻找准确替代的词。那我在这里告诉你你做错了如果你想谈论x,那么要么这样做

>在some_expression的上下文中。在这种情况下,使用我给你的粗体短语:“在some_expression内部,x绑定到Foo类型的值。或者,您可以谈论x …
有关你正在处理哪个monad的额外知识。

例如,对于#2,对于someList.flatMap(x => some_expression),您可以说“x是someList的每个元素”。对于someFuture.flatMap(x => some_expression),您可以说“x是一些成功的未来价值,如果它确实已经完成并成功了”。

你看,这就是Monads的美丽。那???你正在尝试描述的是Monad接口摘要的东西。现在你明白为什么这么难吗?一个名字?这是因为它对于每个特定的单体具有不同的名称和不同的含义。这就是Monad抽象的观点:在相同的计算界面下统一这些不同的概念。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读