问题标签 [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 投票
2 回答
10624 浏览

scala - Scala向右折叠和向左折叠

我正在尝试学习函数式编程和 Scala,所以我正在阅读 Chiusano 和 Bjarnason 的“Scala 中的函数式编程”。在列表的情况下,我无法理解向左折叠和向右折叠方法的作用。我环顾四周,但没有找到适合初学者的东西。所以书上提供的代码是:

Cons 和 Nil 在哪里:

那么左右折叠实际上是做什么的呢?为什么需要作为“实用”方法?还有许多其他使用它们的方法,我也很难理解它们,因为我不明白这两个。

0 投票
5 回答
27241 浏览

java - 等效于 Java 8 中的 Scala 的 foldLeft

foldLeftScala在 Java 8中的伟大之处是什么?

我很想它是reduce,但 reduce 必须返回与它 reduce 相同类型的东西。

例子:

上面代码中的问题是accumulator:new StringBuilder("")

因此,任何人都可以指出我的foldLeft/fix 我的代码的正确等价物吗?

0 投票
2 回答
656 浏览

scala - Scala 使用 foldLeft 在字符串列表之间插入终止符

我编写了自己的 a 递归定义,foldLeft我想将它与这个函数一起使用,该函数joinTerminateLeft接受一个字符串列表和一个终止符,并创建一个新字符串,这些字符串全部由终止符分隔。

例如List("a", "b", "c", "d"),终结者;最终会成为a;b;c;d;

这是我的foldLeft,我认为这很好,但terminateLeft由于某种奇怪的原因我的不起作用,知道吗?

当我joinTerminateLeft使用 a,b,c,d 运行时,由于某种原因它在 B 之后停止并输出字符串 c,d 但不使用终止符。

0 投票
2 回答
522 浏览

scala - 具有因变量的 Scala 映射

在 scala 中,我有一个返回值的函数列表。函数的执行顺序很重要,因为 function 的参数是 functionn的输出n-1

这提示使用foldLeft,例如:

(细节:类型A实际上是一个 Spark DataFrame)。

但是,每个函数的结果是互斥的,最后我想要每个函数的所有结果的并集。这提示使用 a map,例如:

但是这里每个函数都应用到base了我不想要的。

Short:一个可变长度的有序函数列表需要返回一个相等长度的返回值列表,其中每个值n-1都是函数的输入n(从basewhere开始n=0)。这样可以连接结果值。

我怎样才能做到这一点?

编辑 示例:

这应该适用于任意数量的函数(例如toAtoB...。toN每次计算前一个结果的剩余部分并将其传递给下一个函数。最后,一个联合应用于所有结果。

0 投票
2 回答
198 浏览

elm - Elm:如何在 foldl 中登录

我有以下代码:

我想a记录b. foldl我试过了:

但是,这会引发错误

我做错了什么,如何记录里面的值foldl

0 投票
1 回答
116 浏览

algorithm - 查找屏幕键盘 scala 的击键

我正在尝试使用 Scala 解决最近的一个面试问题。

您有一个屏幕键盘,它是一个 6 行、每列 5 列的网格。从 A 到 Z 的字母和空格首先排列在网格行中。

您可以在屏幕键盘上使用它来输入单词。通过按向左、向右、向上、向下或 OK 键使用您的电视遥控器来输入每个字符。

问题:给定一个输入字符串,找出需要在遥控器上按下以键入输入的击键序列。

代码实现可以在

https://github.com/mradityagoyal/scala/blob/master/OnScrKb/src/main/scala/OnScrKB.scala

我试图用三种不同的方法来解决这个问题..

  1. 简单的 forldLeft。

    }

  2. 分而治之 - 使用分而治之的机制。该算法类似于归并排序。* 如果长度> 3,我们将输入单词一分为二 * 我们递归调用子程序以从拆分中获取左右两半的路径。*最后..我们添加第一个击键+从第一个字符串末尾到第二个字符串开头的击键+第二个击键。* 本质上,我们将输入字符串分成两个较小的部分,直到我们达到 4 的大小。对于小于 4,我们使用折叠权。

    }

  3. 折叠 - 使用底层操作是关联的(但不是可交换的)的属性。* 例如.. keystrokes("ABCDEFGHI", startChar = 'A') == keystrokes("ABC", startChar='A')+keystrokes("DEF", 'C') + keystrokes("GHI", 'F')

    /li>

我的问题: 1. 分而治之的方法比折叠更好吗?

  1. 折叠和分而治之比 foldLeft 更好(针对这个特定问题)

  2. 有没有办法可以将分而治之的方法或折叠方法表示为 Monad?我可以看到结合律得到满足……但我无法弄清楚这里是否存在幺半群……如果是的话……它对我有什么好处?

  3. 分而治之的方法是解决这个特定问题的最佳方法吗?

  4. 哪种方法更适合火花?

欢迎任何建议..

0 投票
1 回答
87 浏览

scala - scala中的列表没有更新

我是 Scala Collections 的新手,目前我想将给定的字符串列表分成两个列表的元组(List[String], List[String]),其中包含回文字符串列表和其余输入字符串。

例如,如果输入是List("racecar", "abcd", "lilil", "effg") 输出应该是(List("racecar", "lilil"), List("abcd", "effg"))

我有一个使用过滤器的解决方案。但是,目前,尝试使用 foldLeft 改进我的解决方案。我的新方法如下:

我不确定,我做错了什么,但这个解决方案的输出是两个空列表的元组,即(List(),List())。

帮助表示赞赏。谢谢!

0 投票
2 回答
73 浏览

erlang - Erlang:交换了Foldl函数参数

为什么累加器AccIn不是左参数Funhttp://erlang.org/doc/man/lists.html#foldl-3

我问这个是因为几乎所有其他函数式语言(例如haskell, scala)都反过来。您的意思是将左折叠可视化为从左侧累积

foldl f z [x1, x2, ..] = ((z f x1) f x2) ..

0 投票
1 回答
1709 浏览

scala - Scala:动态连接数据帧

我将数据拆分为多个文件。我想加载并加入文件。我想构建一个动态函数 1. 将 n 个数据文件连接到一个数据框 2. 给定文件位置和连接列的输入(例如,pk)

我认为这可以用 foldLeft 完成,但我不太确定如何:

到目前为止,这是我的代码:

0 投票
2 回答
237 浏览

function - Haskell——试图让我的 foldl 函数工作

我有一个函数可以转换 [a, b, c, d, . . . ] 到 [(a,b), (c, d), . . .]。现在这工作了,这里是代码:

现在我要做的下一件事是:使用前面的函数,使用 foldl 和 lambda 表达式将每个元组转换为其两个元素的乘积。这就是我所拥有的:

现在我不确定这是否正是我所要求的。我不确定是否应该使用类型声明和诸如此类的东西创建一个单独的函数。也许有人可以告诉我这是否是解决这个问题的最佳方法。此代码也不起作用,我不知道为什么,我需要这部分的帮助。(请注意,它说要使用 lambda,但我不知道如何真正正确地使用它们,这是我需要帮助的另一部分)我真的很感激,谢谢。