问题标签 [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.
haskell - 如何检查 BST 是否有效?
给定 BST 的定义并使用 BST 的通用版本 fold,我如何检查 BST 是否有效?
这个想法是检查节点值是否大于左子树中的所有值并小于其右子树中的所有值。这必须True
适用于树中的所有节点。一个函数bstList
简单地输出 BST 中的(有序)值列表。
当然这样的事情是行不通的:
因为,例如,将 fold 函数应用于节点19
最终会all (<19) (bstList True) && all (>19) (bstList True)
.
haskell - 用于通用 Haskell 树的通用 foldr 和 foldl?
给定这个定义,我如何为通用 Haskell 树编写通用的 foldr 和 foldl 函数?
即使我能理解 foldr 和 foldl 函数在 Haskell 中的工作原理,我也不太确定如何为树编写这个通用函数。
编辑:我尝试过这样的事情(甚至没有编译):
编辑2:再试一次......
treefoldr
正在工作,但treefoldl
不是:
scala - foldLeft 的替代方法,从第二个元素开始
我有一个List
定义为:
我想把它转换成字符串
一种方法如下:
有没有更优雅的方法?
[编辑:进一步解释]
当元素l
具有“有意义”的toString
方法时,Easy Angel 的答案有效。
虽然我有l
as List[String]
,但l
可以是不覆盖该toString
方法的自定义类型的列表,例如:
我也有方法
所以我希望getMy
使用的输出而不是默认toString
方法的输出。
list - Erlang:是否可以将最小函数编写为列表折叠?
给定一个函数:
我可以在函数foldl
中以与此类似的方式使用它吗?
我相信这是不可能的,因为我必须设置一个将与列表的其余部分进行比较的初始值,例如,没有我能想到的身份函数。我对吗?
语法是用 Erlang 编写的,但非 Erlang 程序员也应该可读。
function - F# 中的 + 是什么?
为什么我不能做类似的事情
scala - 为什么 Option 没有 fold 方法?
我想知道为什么scala.Option
没有fold
定义这样的方法:
相当于
没有比使用map
+更好的getOrElse
吗?
list - Haskell中列表的递归
例如,我有一个类似 ['a','b','c','d','e'] 的列表。
我想做这样的事情:
首先对前两个元素做一些事情, f 'a' 'b'
然后对 f 的返回值和列表中的下一个元素做同样的事情,结果 = f 'a' 'b ',让我们说像 f 结果'c'。然后 f resultof(result 'c') 'd' 等等。
我怎么能做这样的事情?
functional-programming - 函数式语言中 fold/reduce 的实际使用
Fold
(aka reduce
) 被认为是一个非常重要的高阶函数。Map
可以表示为fold
(见这里)。但对我来说,这听起来比实际更学术。一个典型的用途可能是获取数字的总和、乘积或最大值,但这些函数通常接受任意数量的参数。那么为什么要(fold + 0 '(2 3 5))
在(+ 2 3 5)
工作正常时写。我的问题是,在什么情况下使用它最容易或最自然fold
?
f# - F# -> 使用 2 个参数折叠
我正在尝试制作一个贯穿我的序列的自定义折叠,一次需要 2Teams
次并将它们分配给 a Match
,然后最后返回 a Match list
。
我目前的代码是:
这给了我(int -> int) list
但显然那是行不通的......我做错了什么?-> 我知道我可以为这个场景创建一个专门的递归函数,但是我想让它尽可能抽象以便重用。