问题标签 [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.
lambda - 使用 Java 8 Stream API 展平地图并关联值
假设我有一组字符串到整数值的映射:
Map<HashSet<String>, Integer> map = new HashMap<>()
.
例如,map
is(我们假设没有重复的字符串):
如何使用Java 8 Stream API获得如下another_map
类型:Map<String, Integer>
它看起来像一个flatMap
操作,但是我怎样才能将整数值与每个字符串键适当地关联起来呢?
scala - flatMap(_) 和 flatMap(x => x) 的区别
在为不耐烦的 Scala 解决收集练习问题时:
编写一个接收字符串集合和从字符串到整数的映射的函数。返回一个整数集合,这些整数是映射的值,对应于集合中的一个字符串。例如,给定< Array("Tom", "Fred", "Harry") >
和< Map("Tom" -> 3, "Dick" -> 4, "Harry" -> 5) >
返回< Array(3,5) >
。提示:用于<flatMap>
组合.<Option>
<get>
这是我的解决方案并且工作正常:
但是,将代码更改为
我收到返回类型错误。它要求我将返回类型更改为 ((Option[Int]) => GenTraversableOnce[_B]) => List[Nothing]
flatMap(x => x) 和 flatMap(_) 有什么区别。据我了解,两者都是一样的。
PS这个问题的更简单的解决方案是
scala - 如何多次调用`flatMap`?- FP-ish 方式
问题
在玩玩具示例时 -位置,骑士可以在移动后到达棋盘n
,从某个位置开始x
- 我想知道是否存在更清洁的解决方案(在简洁和函数式编程的意义上)
- 执行
flatMap
(暂时忽略filter
)一定次数(每次移动一次) - 拥有(甚至)更多的 FP-ish 编码方式
我试过的
- 一个简单的递归变体
move(...)
- 使用函数组合的变体
move2(...)
代码
编辑 - 2015-11-29 - 02:25AM
从 Alvaro Carrasco 给出的答案中得到一些启发,我move2
优雅地将方法重写为:
问题:
- 为什么要
Kleisli
按照 Alvaro 的建议使用 Scalaz?(不是责备,我想要争论;)) - 是否有可能更优雅的解决方案?
scala - flatMap 到底是做什么的?
对于学校的编码任务,我必须使用 flatmap 做一些事情,但我完全不知道它的作用,我已经在网上阅读了几页并在我的教科书中阅读,但我仍然没有真正理解它的作用。我知道 map 的作用,但由于某种原因,我很难将我的头绕在 flatmap 上。任何人都可以帮忙吗?谢谢。
只是为了添加更多信息-当我查看在线示例时,我确实看到了 flatmap 如何返回与 map 不同的东西。但是当 flatmap 被调用时,它实际上在做什么呢?平面图实际上是如何工作的?在返回结果之前它在做什么?
java - 如何将其返回到数组或双精度列表中
我无法设法将其检索到数组或集合中,我该怎么做?
这不起作用
scala - Scala - 平面映射一系列选项和可遍历
考虑在某些案例匹配上编写的 flatMap。例如:
但是,这不会编译。如果 seq 是 Option[Int] 的全部或 Seq[Int] 的全部,则 flatMap 有效。但如果 Seq 是选项和 Seq 的混合体,则不会。为什么会有这样的限制?这是否解决了我目前无法想到的特殊歧义。
EDIT1 从 REPL 添加代码片段
EDIT2 在菲利波的回答之后,我在 REPL 中尝试了以下代码,它起作用了。
每种情况下的分辨率有何不同。Seq
更重要的是,当我映射而不是 flatMap 时,结果与我创建的 a 相同。
scala - 为什么我们需要 flatMap(通常)?
我一直在研究 FP 语言(断断续续),并且使用过 Scala、Haskell、F# 和其他一些语言。我喜欢我所看到的并理解 FP 的一些基本概念(绝对没有范畴论的背景——所以请不要谈论数学)。
因此,给定一个类型M[A]
,map
它接受一个函数A=>B
并返回一个M[B]
. 但是我们也有flatMap
which 接受一个函数A=>M[B]
并返回一个M[B]
. 我们也有flatten
which 接受 aM[M[A]]
并返回 a M[A]
。
此外,我读过的许多资料都描述flatMap
为.map
flatten
那么,鉴于这flatMap
似乎等同于flatten compose map
,它的目的是什么?请不要说它是为了支持“理解”,因为这个问题确实不是 Scala 特有的。我不太关心语法糖,而是关心它背后的概念。Haskell 的绑定运算符 ( ) 也会出现同样的问题>>=
。我相信它们都与某些类别理论概念有关,但我不会说那种语言。
我看过 Brian Beckman 的精彩视频Don't Fear the Monad不止一次,我想我知道那flatMap
是一元组合运算符,但我从未真正看到它使用他描述此运算符的方式。它执行此功能吗?如果是这样,我如何将该概念映射到flatMap
?
顺便说一句,我对这个问题写了很长的文章,其中有很多清单显示了我试图深入了解其含义的实验flatMap
,然后遇到了这个问题,它回答了我的一些问题。有时我讨厌 Scala 的隐式。他们真的可以搅浑水。:)
scala - scala:选项元组上的复杂平面图
我的数据类型是:(List[(Option[Set[Long]], Option[Set[(Long, Long)]])]
即一个 2 元组选项的列表,一个用于一组 Long,一个用于一组 2 元组的 Long)。例如:
我希望将这个 List 平面映射成一个List[Set[Long]]
类型,以这样一种方式,第二个 Option 的每个第一个元素都将连接到一个带有第一个 Option 的新 Set。所以这里想要的结果是:
这适用于以下代码:
当第二个选项为 时,情节变厚None
,第一个选项“存在”,例如:
并假设我无法避免这种情况。在这种情况下,我想按原样获取第一个 Set:
但是,使用与上面相同的代码,该set2
值变成了一个空集,map
在这种情况下没有任何意义,我会得到一个空列表:
那么,我该怎么做呢?最好优雅:)
swift - 展平和展开二维数组中的选项
下面的代码完成了这项工作。
但是flatMap
如果find,一个接一个的不会使代码易于阅读。您将如何以更简洁的方式编写此内容?
scala - 为什么映射器函数结果不是 Vector[Option[Int]] 的 Vector[Option[Int]] 上的 flatMap 有效?
例如,
产生 aVector(1, 2, 3)
而不是给出错误。正如我在其他语言中看到的那样,flatMap
当你有一个产生嵌套的映射器函数时使用它,所以我希望这是一个有效的flatMap
:
如果我使用 a由于容器包装,我的映射器函数会产生一个Vector
会导致嵌套(即)。但是,将删除此嵌套并将其展平。当嵌套两个相同的单子时,这是有道理的。Vector(Vector(1), Vector(2), Vector(3), Vector(4))
map
flatMap
但是,我不明白如何将 aflatMap
与返回 an 的映射器函数一起使用Option
使 aVector[Option[Int]]
变为Vector[Int]
. 是否正在进行某种转变(我以前从未见过这种情况),有人可以解释一下并可能指出一些资源吗?
非常感谢