问题标签 [fold]
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.
mercurial - Mercurial——获取存储库中的所有文件,包括子存储库,但不获取存储库本身
这可能吗?
对我想要做的事情做一个简单的解释:
我有一个带有子存储库“B”的存储库“A”。我有这对的两份。
在一个副本(我们称之为小副本)中,“A”具有变更集 A1-A5,“B”具有变更集 B1-B20。
在另一个(大)副本中,“A”具有变更集 A1-A10,“B”具有变更集 B1-B30。
我想要做的是从大仓库中获取所有文件并将它们作为变更集 A6 和 B21 提交给小仓库。然后我会将它推送到服务器。(服务器上不存在大存储库,因此这不会产生任何冲突。)。
这方面的工具似乎确实存在——例如,请参见此处。问题是我不知道任何建议的方法是否与子存储库配合得很好。
map - 为什么 Map.make.fold 更像 List.fold_right (非尾递归)?
关于 Ocaml 折叠的问题:您能解释一下为什么 Map.make.fold 的设计更像 List.fold_right 而不是 List.fold_left,请注意 List。fold_right 不是tail_recursive?应该有 Map.make.fold_left 和 Map.make.fold_right ?
api - 为什么 fold 在 Scala 中具有以下类型?
我正在查看为 immutable.Set 定义折叠的方式:
然而 foldLeft 被定义为:
这对我来说看起来很奇怪,至少乍一看,因为我希望 fold 能够更改它返回的集合的类型,就像 foldLeft 一样。
我想这是因为 foldLeft 和 foldRight 保证了元素折叠的顺序。fold 给的保证是什么?
html - 如何使用 Vim 折叠/展开 HTML 标签
是否有一些插件可以在 Vim 中折叠 HTML 标签?
或者还有另一种方法来设置折叠或展开 html 标签的快捷方式?
我想像缩进折叠一样折叠/展开 html 标签。
scala - Scala 向量折叠语法(/: and :\ and /:\)
有人可以提供一些例子来说明如何
真的习惯了吗?我认为它们是 reduce / fold 方法的快捷方式,但没有关于它们如何在 Scala 文档中实际使用的示例,并且无法在 StackOverflow 上搜索 / 搜索它们。
recursion - 使用 fold_left/right 反转 OCaml 中的列表
更新 - 解决方案
感谢 jacobm 的帮助,我想出了一个解决方案。
我正在学习 OCaml(用于类)中的不同递归方式,并且为了一些练习,我正在编写一个函数来使用不同的递归样式来反转列表。
现在,我正在尝试编写一个反向函数,List.fold_left
但我被卡住了,无法弄清楚。我将如何使用折叠来编写这个反向函数?
此外,如果有人对函数式编程、不同类型的递归、高阶函数等有很好的参考,将不胜感激链接:)
list - 无限列表的左右折叠
我对Learn You A Haskell中的以下段落有疑问(很棒的书 imo,而不是 dissing):
一个很大的区别是右折叠适用于无限列表,而左折叠则不行!说白了,如果你在某个点取一个无限列表,然后从右边折叠它,你最终会到达列表的开头。但是,如果您在某个点上取出一个无限列表并尝试从左侧折叠它,您将永远不会到达终点!
我就是不明白。如果您获取一个无限列表并尝试从右侧折叠它,那么您将不得不从无穷大的点开始,这不会发生(如果有人知道您可以这样做的语言,请告诉:p )。至少,您必须根据 Haskell 的实现从那里开始,因为在 Haskell 中, foldr 和 foldl 不采用决定它们应该在列表中的哪个位置开始折叠的参数。
我同意报价 iff foldr 和 foldl 采用的参数决定了它们应该在列表中的哪个位置开始折叠,因为如果您采用无限列表并从定义的索引开始折叠,它最终会终止,而它不会不管你从哪里开始左弃牌;你将向无穷大折叠。然而 foldr 和 foldl不接受这个论点,因此引用没有意义。在 Haskell 中,无限列表上的左折叠和右折叠都不会终止。
我的理解是正确的还是我遗漏了什么?
functional-programming - 在 OCaml 中“突破”?
我有一个使用 List.fold_left2 来检查列表是否为回文的函数。(折叠的使用不是可选的:这是一个家庭作业问题。)
但我想优化它。一旦发现一个不匹配,返回“假”的最佳方法是什么?
我宁愿不抛出异常,但我意识到这可能是最好的答案。我还考虑将匿名函数更改为:
haskell - foldl 是如何偷懒的?
在 Haskell 中 有很多关于、和的好问题和答案。foldl
foldr
foldl'
所以现在我知道:
1)foldl
很懒
2)不要使用foldl
,因为它会炸毁堆栈
3)使用foldl'
,因为它很严格(ish)
如何foldl
评估:
1)创建了一大堆 thunk
2)在 Haskell 完成创建 thunk 后,thunk 减少了
3)如果有太多 thunk 则溢出堆栈
我感到困惑的是:
1)为什么在所有重击之后必须发生减少?
2)为什么不foldl
评估就像foldl'
?这只是实现的副作用吗?
3) 从定义来看,foldl
它看起来可以使用尾递归来有效地评估——我如何判断一个函数是否真的会被有效地评估?如果我不想让我的程序崩溃,我似乎不得不开始担心 Haskell 中的评估顺序。
提前致谢。我不知道我对评估的理解foldl
是否正确-如有必要,请提出更正。
更新:看来我的问题的答案与范式、弱范式和头部范式以及 Haskell 对它们的实现有关。
但是,我仍在寻找一个示例,其中更急切地评估组合函数会导致不同的结果(崩溃或不必要的评估)。
scala - 如何折叠左边的 BigDecimal 列表?(“重载方法+无法应用”)
我想为 BigDecimal 列表编写一个简短的函数求和函数,并尝试使用:
但我收到了这个错误信息:
如果我改用 Int,则该函数有效。我猜这是因为 BigDecimal 的运算符重载了+
. BigDecimal 有什么好的解决方法?