问题标签 [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.

0 投票
4 回答
2186 浏览

haskell - 如何检查 BST 是否有效?

给定 BST 的定义并使用 BST 的通用版本 fold,我如何检查 BST 是否有效?

这个想法是检查节点值是否大于左子树中的所有值并小于其右子树中的所有值。这必须True适用于树中的所有节点。一个函数bstList简单地输出 BST 中的(有序)值列表。

当然这样的事情是行不通的:

因为,例如,将 fold 函数应用于节点19最终会all (<19) (bstList True) && all (>19) (bstList True).

一个 BST

0 投票
1 回答
1792 浏览

haskell - 树的通用foldr函数?

如何为通用 Haskell 树编写通用 foldr 函数?

我坚持第一个参数定义......

编辑:如何更通用的版本,避免使用列表?更多在这里

0 投票
3 回答
1295 浏览

haskell - 用于通用 Haskell 树的通用 foldr 和 foldl?

给定这个定义,我如何为通用 Haskell 树编写通用的 foldr 和 foldl 函数?

即使我能理解 foldr 和 foldl 函数在 Haskell 中的工作原理,我也不太确定如何为树编写这个通用函数。

编辑:我尝试过这样的事情(甚至没有编译):

编辑2:再试一次......

treefoldr正在工作,但treefoldl不是:

0 投票
3 回答
869 浏览

scala - foldLeft 的替代方法,从第二个元素开始

我有一个List定义为:

我想把它转换成字符串

一种方法如下:

有没有更优雅的方法?

[编辑:进一步解释]

当元素l具有“有意义”的toString方法时,Easy Angel 的答案有效。

虽然我有las List[String],但l可以是不覆盖该toString方法的自定义类型的列表,例如:

我也有方法

所以我希望getMy使用的输出而不是默认toString方法的输出。

0 投票
3 回答
1649 浏览

list - Erlang:是否可以将最小函数编写为列表折叠?

给定一个函数:

我可以在函数foldl中以与此类似的方式使用它吗?

我相信这是不可能的,因为我必须设置一个将与列表的其余部分进行比较的初始值,例如,没有我能想到的身份函数。我对吗?

语法是用 Erlang 编写的,但非 Erlang 程序员也应该可读。

0 投票
1 回答
186 浏览

function - F# 中的 + 是什么?

为什么我不能做类似的事情

0 投票
4 回答
9126 浏览

scala - 为什么 Option 没有 fold 方法?

我想知道为什么scala.Option没有fold定义这样的方法:

相当于

没有比使用map+更好的getOrElse吗?

0 投票
3 回答
3173 浏览

list - Haskell中列表的递归

例如,我有一个类似 ['a','b','c','d','e'] 的列表。
我想做这样的事情:
首先对前两个元素做一些事情, f 'a' 'b'
然后对 f 的返回值和列表中的下一个元素做同样的事情,结果 = f 'a' 'b ',让我们说像 f 结果'c'。然后 f resultof(result 'c') 'd' 等等。
我怎么能做这样的事情?

0 投票
6 回答
5554 浏览

functional-programming - 函数式语言中 fold/reduce 的实际使用

Fold(aka reduce) 被认为是一个非常重要的高阶函数。Map可以表示为fold见这里)。但对我来说,这听起来比实际更学术。一个典型的用途可能是获取数字的总和、乘积或最大值,但这些函数通常接受任意数量的参数。那么为什么要(fold + 0 '(2 3 5))(+ 2 3 5)工作正常时写。我的问题是,在什么情况下使用它最容易或最自然fold

0 投票
1 回答
418 浏览

f# - F# -> 使用 2 个参数折叠

我正在尝试制作一个贯穿我的序列的自定义折叠,一次需要 2Teams次并将它们分配给 a Match,然后最后返回 a Match list

我目前的代码是:

这给了我(int -> int) list

但显然那是行不通的......我做错了什么?-> 我知道我可以为这个场景创建一个专门的递归函数,但是我想让它尽可能抽象以便重用。