问题标签 [flatmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - How does a flatMap on a double-generic data-structure looks like?
I have the following (simple) data structure:
#xA;This type represents work which can take an Input
and turns in into a desired Output
. I am trying to see whether this data structure conforms to some functional concepts like a functor or a monad.
Functor
#xA;That seems to be correct as far as I am aware. I am able to write a map function which can turn Work<Input, Output>
into Work<Input, MoreOutput>
Monad
I have trouble thinking of the definition for a flatMap
(or fold
) function for Work
. The only thing I can come up with is the following:
If you look up the flatMap
definition for an Array
in swift it looks like this (simplified):
This is a function where its argument is a function which transforms an Element
into T
and results an Array
. I cannot think of a way to abstract this to the Work
type.
From another functional book I found a general definition for flatMap as follows (on an object F
holding type A
):
which is a different definition of flatMap
than Array
seems to implement.
Can someone explain this difference to me? And is it even possible to define a 'correct' flatMap
function on Work
? Or does Work
not satisfy the properties to be a Monad?
** Edit
Thanks phg for so much useful info. I've tried to do the Profunctor definition:
Making Work
a Profunctor
:
Does that look right to you?
scala - Map 中的 flatMap 如何在 scala 中工作?
这是我的代码
上面的代码给出
如果我将 for 理解的屈服值更改为a
,(a, b)
结果是
如果我更改(a, b)
为(a, b, c)
,结果是
我的问题是确定结果类型的机制是什么?
rxjs - 为什么 flatMap 和 fromEvent 仅在按照示例在第一次订阅期间返回时才起作用?
如下图,为什么示例1在我们返回div然后单独返回一个新的click observable flatMap to 时会失败click$
?
示例 2 工作正常。JSBin 下面试试看
任何人都可以解释为什么会发生这种情况?据我了解,flatMap 扩展了 Observable。 http://jsbin.com/sowodi/3/edit?js,控制台,输出
scala - 可以更简洁地使用 Scala 的 Option flatMap 方法吗?
诚然,我对 Scala 很陌生,而且我在使用许多 Scala 示例中看到的语法糖时遇到了麻烦。它通常会产生一个非常简洁的陈述,但老实说到目前为止(对我来说)有点难以理解。
因此,我希望将 Option 类的典型用法(安全解引用)作为理解的一个很好的起点,例如,在我见过的特定示例中使用下划线。
我发现了一篇非常好的文章,展示了使用 Option 来避免 null 情况的示例。
https://medium.com/@sinisalouc/demystifying-the-monad-in-scala-cc716bb6f534#.fhrljf7nl
他这样描述一个用途:
顺便说一句,您也可以将这些函数编写为就地 lambda 函数,而不是先验地定义它们。然后代码变成了这样:
看起来很棒!也许不像 groovy 那样简洁,但还不错。
所以我想我会尝试将它应用于我试图解决的案例。
我有一个类型Person
,其中 a 的存在Person
是可选的,但如果我们有一个人,他的属性是有保证的。因此,Option
在Person
类型本身中没有使用类型。
Person
有一个类型为 的PID Id
。该Id
类型由两种String
类型组成;Id-Type 和 Id-Value。
我使用 Scala 控制台测试了以下内容:
好的。这设置了我的人,它是可选的实例。
我从上面链接的文章中了解到,我可以使用 flatMap 获取 Persons Id-Val;像这样:
伟大的!这样可行。如果我实际上没有人,我的结果是“NoValue”。
我使用了 flatMap(而不是 Map),因为除非我误解(并且我对 Map 的测试不正确),否则如果我使用 Map,我必须提供备用或默认 Person 实例。我不想做的。
好的,所以,flatMap 是要走的路。
但是,这确实不是一个非常简洁的陈述。如果我用一种更时髦的风格来写它,我想我可以做这样的事情:
哇,这有点好看!
Scala 肯定有办法提供至少与 Groovy 一样好的东西吗?
在上面的链接示例中,他能够使用我之前提到的一些语法糖使他的陈述更加简洁。下划线:
甚至更简洁:
因此,在这种情况下,下划线字符似乎允许您跳过指定类型(因为类型是推断出来的)并将其替换为下划线。
但是,当我用我的例子尝试同样的事情时:
斯卡拉抱怨。
有人可以在这里帮助我吗?
我怎么会误解这个?有没有写我上面冗长的陈述的速记方法?flatMap 是实现我所追求的最佳方式吗?还是有更好的更简洁和/或可读的方式来做到这一点?
提前致谢!
scala - Scala Flatmap on Array 里面的值部分
我有像 (a,b,Array(p1,p2,p3),c) 这样的 RDD,我想在值内的 Array 上应用 flatmap 以获得以下输出。(a,b,p1,c) (a,b,p2,c) (a,b,p3,c)
arrays - Swift:将一组字典展平为一个字典
在 Swift 中,我试图将一系列字典扁平化为一个字典,即
我试过使用flatmap,但返回结果的类型是[(String, AnyObject)]
而不是[String, Object]
ie
所以我有两个问题:
为什么返回类型 [(String, AnyObject)]?括号是什么意思?
我如何达到预期的效果?
编辑:我更喜欢使用 Swift 的 map/flatmap/reduce 等功能方法,而不是 for 循环
rx-java - RxJava - flatmap vs concatMap - 为什么在订阅时订购相同?
根据这个线程conCatMap 和 flatmap 仅在发出项目的顺序上有所不同。所以我做了一个测试并创建了一个简单的整数流,并想看看它们会以什么顺序发出。我做了一个小的 observable,它可以接收 1-5 范围内的数字并将它们乘以 2。简单的。
这是带有平面图的代码:
以及使用 concatMap 的完全相同的代码:
当我在日志中看到打印出来时,两者的顺序都是一样的,为什么?我以为只有 concatMap 会保留顺序?
java - 如何在java中单列表列表
我在这里有一个代码,可以在 java 中获取列表列表。但我现在的问题是我的服务器中的结果是可重复的......
例子
我的数组中的值的值数是出现的相同的 3 组数组。
这是我的代码。请帮我。
javascript - 'fmap' 和 'flatMap' 之间的区别(如果有)
到目前为止,我发现的每个资源都比较了map和flatMap。
那不是我的意图。
在这个关于 javascript 函数式编程的 YouTube 视频中(特别是 12:27 左右),演讲者展示了一个在函子上进行fmap
ing的示例。Maybe
到目前为止一切都很好。让我感到困惑的是mjoin
,而演讲者关于如何flatMap
(不是fmap
)的评论只是fmap
和的组合mjoin
。
这让我感到困惑,因为到目前为止我一直在使用这些名称fmap
并且flatMap
可以互换,尽管这次谈话暗示它们不是同一个东西。
对于一个具体的问题,我想知道在函数式编程的上下文中这是否是特定于实现的,或者fmap
实际上flatMap
是两个不同的东西?如果它们不同,如果它不是平坦的,那么f
in代表什么?fmap
它在我的脑海中仍然很模糊,但首先想到的是flatMap
它将映射到一个函子,产生嵌套的函子,然后将其展平为一个函子(或至少一个级别)。相反,fmap
的函数参数将返回单个函子,不需要展平。
也许我很近,或者很远。FP 世界中的任何人都关心阐明一些问题吗?
上面提到的视频。
https://www.youtube.com/watch?v=AvgwKjTPMmM
编辑
如果它们不同,是否f
转换fmap
为仿函数映射?
最佳的揣测。
尽管函子实现了映射,但从技术上讲,每个函子都map
在作用于某种类型的函子。
请。清除。朦胧。脑。
scala - 在 Spark 中 flatMap 与 map 的效率,然后是 reduce
我有一个包含多行文本的文本文件 sherlock.txt。我使用以下方法将其加载到 spark-shell 中:
我的目的是计算文件中的字数。我遇到了两种替代方法来完成这项工作。
首先使用flatMap:
第二次使用map,然后使用reduce:
两者都正确产生相同的结果。我想知道上述两种替代实现在时间和空间复杂度上的差异,如果确实有的话?
scala 解释器是否将两者都转换为最有效的形式?