下面是一些Scala来说明:
scala> // map
scala> List(1,2,3,4,5,6).flatMap {x => List(x * x)}
res20: List[Int] = List(1, 4, 9, 16, 25, 36)
scala> // filter
scala> List(1,2,3,4,5,6).flatMap {x => if (x % 2 == 0) List() else List(x)}
res21: List[Int] = List(1, 3, 5)
哈斯克尔也是如此:
Prelude> -- map
Prelude> [1, 2, 3, 4, 5, 6] >>= (\x -> [x * x])
[1,4,9,16,25,36]
Prelude> -- filter
Prelude> [1, 2, 3, 4, 5, 6] >>= (\x -> if (mod x 2 == 0) then [] else [x])
[1,3,5]
Scheme和Python还有一个reduce
函数,该函数通常与map
和filter
分组。reduce
函数使用提供的二进制函数组合列表的前两个元素,然后将结果组合为下一个元素,依此类推。计算一系列值的总和或乘积的常用用法。下面是一些Python示例:
>>> reduce(lambda x, y: x + y, [1,2,3,4,5,6])
21
>>> (((((1+2)+3)+4)+5)+6)
21
绑定操作的一个定义性质是,结果仍然“在”单子的内部。因此,当您对一个列表执行绑定时,结果将再次是一个列表。由于reduce操作所产生的结果通常不是列表,因此不能用bind操作来表示。
此外,对列表的绑定操作(即concatmap/flatmap)一次只查看一个元素,无法重用前面步骤的结果。因此,即使我们可以将结果包装在一个单元素列表中,也没有办法只使用单子操作来完成它。
所以,如果您有一个类型,除了monad类型类定义的操作之外,不允许对它执行任何操作,那么您永远不能“跳出”monad。这就是木卫一单子工作的原因。
我有6个输入框,每个输入框有4位数字。输入4位数字后,光标将自动转到下一个输入框。所有这些都是强制性的。 现在,可以在“onChange”事件中将自动聚焦设置为下一个文本框。但如何将这6个输入框的值绑定到表单上的一个字段。我有办法吗?
[{codice=欧元,description=欧元,ratio=1},{codice=美元,description=美元,ratio=1.1}] 我想在中转换它,如下所示: {EUR={codice=欧元,description=欧元,ratio=1},USD={codice=美元,description=美元,ratio=1.1}} 但这返回一个而不是我需要的。 我想函数会对我起作用,但不知道
我正在尝试减少阵列流的并行流 我知道合并器用于合并并行流。。但它并没有像我预期的那样工作,因为我得到了如下重复结果:- 那么为什么结果是重复的呢?在累加器中使用数组列表是否线程安全?
问题内容: 我有一个表格,有两个按钮 我也使用jQuery UI的按钮,就像这样 但是,第一个按钮也会提交表单。我本以为,如果没有,它就不会。 显然我可以做到这一点 但是有没有办法可以在没有JavaScript干预的情况下阻止后退按钮提交表单? 老实说,我只使用了一个按钮,因此可以使用jQueryUI设置样式。我尝试调用该链接,但未如预期的那样工作(看起来非常难看!)。 问题答案: 为默认值的属性
我的代码: 产生同样的结果。谁能找出我做错了什么或任何其他方法来实现这一点..谢谢
更新:显然这个特性现在计划在dplyr上使用,正如这里讨论的:https://github.com/tidyverse/dplyr/pull/6145 在SQL中,当验证了给定的情况时,可以分配多个变量,比如var1和var2,构造如下 条件then var1 = x,var2 = y时的情况 dplyr::case_when(或tidyverse中的其他任何东西)是否支持这个有用的功能),如果是