问题标签 [foldleft]

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.

0 投票
1 回答
581 浏览

haskell - 折叠是如何工作的?

任何人都可以解释如何foldl工作?
我知道,例如,foldr (-) 0 [1,2,3]产生 (1 - (2 - (3 - 0))),而foldl (-) 0 [1,2,3]产生 (((0 - 1) - 2) - 3),但我还有一些问题:

  • 第一个示例(带有 foldr/foldl 的列表的长度):
    foldr (\_ acc -> acc + 1) 0 [1,2,3,4,5]按预期生成 5。
    foldl (\_ acc -> acc + 1) 0 [1,2,3,4,5]产生6。:|
    foldl (\_ acc -> acc + 1) 0 [2]产生3。:|
    foldl 对这些给定的例子有何反应?

  • 第二个例子:
    foldr (:) [] [1,2,3,4]产生 [1,2,3,4] - 不用担心,但foldl (:) [] [1,2,3,4]给我一个错误:Occurs check: cannot construct the infinite type: a ~ [a]
    foldl 有什么问题?

0 投票
1 回答
895 浏览

list - scala中元组列表的合并列表

我有一个包含重叠元素的元组列表。

我正在尝试合并元组列表中的重叠元素。这是我正在处理的代码,它使用 foldleft 来合并列表中的重叠元组列表。合并无法正常工作,因为它错过了元组列表的一些元素。每个元组列表中包含 4 个元组. 列表中的每个元组列表经常重叠,因为它们是使用滑动函数从更大的列表生成的。

这是我正在使用的示例数据:

合并后的列表如下:

更新1:

重叠:如果两个元组列表在两个列表中都存在3个或更多精确元组,那么它们应该是重叠的元组列表。但是当两个列表合并时应该没有任何区别。如果其中一个元组值两个列表具有相同的整数但不同的字符,则它们不应合并。合并:当它们重叠时组合两个或多个元组列表。

更新 2:我想出了一个小解决方案,但不确定它的效率如何。

所以当我打印上面的代码时,我得到以这种方式分组的元组列表。我只打印了应该合并的每个元组组的索引。

生成的结果:ListBuffer((0,2), (0,3), (1,4), (2,5), (3,6), (4,7), (5,8), (6, 9), (7,10))

这是使用了索引的元组列表

所以现在我要做的就是使用interGrps,根据第二个值链接组,最后用元组列表替换索引..

0 投票
1 回答
166 浏览

scala - 地图上的 foldLeft - 为什么会这样?

这是来自 Coursera 的课程,直到现在没有人能帮助我。以下作品,取自一次讲座。

考虑到foldLeftin的签名Map如下,

我尝试理解签名并将其映射到上面示例中的用法。

零元素z对应于terms所以类型将是Map[Int, Double]
操作员op对应addTerm哪个有签名( Map[Int, Double], (Int, Double) ) => Map[Int, Double]

对我来说,这看起来并不一致。我究竟做错了什么?

0 投票
2 回答
4487 浏览

list - 如何从 List 中找到带有 foldLeft 的值的位置?

我有一个包含 1 和 -1 的列表。我追求的目标是在总数为-1时在列表中找到位置。

但是我的代码不起作用。

这是我的尝试(为了更好地阅读,我将代码隔开) 注意:floor是保存 Ints 列表的 val。

我想知道我在这里做错了什么。我真的很想知道为什么,而不仅仅是答案本身。

0 投票
0 回答
203 浏览

scala - 命令式与函数式数据结构的权衡

同一事物的这两个示例之间是否有一些权衡?

我的偏见是始终使用函数式样式,但是如果我运行数十亿个这样foldLeft的 s,是否为每个列表中的每一步创建一个新FunctionalA的比仅更新 a 效率低var

一个通用的值集合:

命令式折叠:

折叠功能:

0 投票
1 回答
1952 浏览

arrays - 如何在scala中合并一系列数组

我有一个 type 的值,Seq[Array[Int]]我想以一个Array[Int]. 我认为 foldLeft 会起作用,但令人惊讶的是它没有:

不过,这个错误似乎并不是全部真相,因为我可以这样做:

是什么赋予了?

0 投票
3 回答
3957 浏览

scala - Scala foldLeft with a List

I have the following code snippet:

Let's assume the test1.txt file is not empty and has some values in it. So my question about the foldLeft function is, why does this example here return an empty list, and when I remove the list at the end of the foldLeft function it works? Why is it returning an empty list under the value fileContent?

0 投票
3 回答
939 浏览

scheme - 使用球拍搜索列表中只有一个“1”

我已经了解了如何使用foldrlambda查找列表中 1 的数量。但是如何使用if条件或任何其他方法来验证列表是否只有一个 1。

count如果可能,如何在 if 条件下使用该值?

0 投票
1 回答
409 浏览

scala - Scala - 聚合与 foldLeft 的性能比较

我的理解是 /: 与 foldLeft 相同,如果使用“par”将列表转换为并行集合,聚合是 foldLeft 的更快版本。如果我是正确的,为什么以下代码显示 :/ 和 foldLeft 比列表中与 'par' 一起使用的聚合更快。

我正在计算一个大列表的元素总和和元素数量,并将结果存储在一个元组 [Double,Double] 中。

我得到以下结果

第一次运行的结果

第二次运行结果

I am running this in windows 10 using cmd. /: and FoldLeft seem similar in performance and are considerably better than aggregate. Aggregate with par was actually more time consuming in 1st run. Could it be an issue due to 'cmd' (console) in window not being able to leverage multi-threading (just guessing here)

0 投票
1 回答
701 浏览

scala - foldLeft 在简单列表上时如何提前中断?

这是我的问题的简化版本,我想在 a.size == 7 的折叠中满足 if 条件后停止折叠返回值。

如您所见,条件在第一次折叠时得到满足,但在某些情况下,它可以在第二次或第一次得到满足。不知道从哪里可以得到任何帮助,不胜感激