fold相关内容

C++17折叠表达式语法?

我正在尝试使用紧凑文件夹表达式,但未成功。 例如,下面是一个正在运行的C++17代码 template struct Fold_And : std::integral_constant { }; template constexpr auto Fold_And_v = Fold_And:: ..
发布时间:2022-08-02 20:37:10 C/C++开发

可视化代码,折叠注释

Visual Studio代码1.24.1 当我今天在做一些事情的时候。它促使我进行了更新(更新到了1.24.1)。我不确定是在大约同一时间意外撞上了快捷键,还是这是由更新引起的。 但我似乎不能再将注释用作折叠点。 但是,我仍然不确定我是否遇到了某种快捷方式,或者这是否是由修补程序引起的。 我的googlefu没有帮助我找到visual studio代码的答案。找到了许多关 ..
发布时间:2022-03-15 22:14:02 其他开发

如何编写 a-> 类型的函数b->b->b 用于折叠一棵树

一些背景知识:我在 Haskell 中有以下类型的 foldT 函数(类似于 foldr,但用于树). foldT :: (a -> b -> b -> b) ->b->树 a ->b 这个 foldT 只接受 type (a -> b -> b -> b) 作为输入函数. 我正在尝试找到一种方法将我的树转换为列表,但无法找到一种方法使我的附加函数采用 (a -> b -> b -> b ..
发布时间:2022-01-22 11:45:51 其他开发

球拍中的树折叠

我是 Racket 的初学者,我遇到了这个问题: 定义一个结构,node,它有这些字段:value、left、middle、对.此结构表示树结构中的节点. 这些字段包含存储在节点、左子树中的值,分别是中间子树和右子树.如果子树不存在,那么对应的字段应该包含一个emptyNode 如下所述. 定义一个结构,emptyNode,在树中指定一个空节点. 编写一个函数,treeFold,它接受 ..
发布时间:2022-01-05 19:00:17 其他开发

在 Lisp 中对树使用 reduce

要在 Lisp 中折叠平面列表,请使用 reduce: * (减少#'+ '(1 2 3 4 5))15 但是如果我有一个任意复杂的树,并且我想对每个元素应用一个函数怎么办?所以折叠 '(1 (2) (3 (4) 5)) 仍然会给出 15?我尝试使用 reduce,但我不得不提供一个自定义函数,这有点违背了目的: (defun tree+ (a b)(cond ((null b) 0)((原 ..
发布时间:2022-01-05 18:54:28 其他开发

Sml 折叠一棵树

到目前为止,我正在尝试使用 fold 函数来获取树的乘积,这就是我所拥有的.我对如何在遍历树时使用折叠方法感到困惑 datatype 'a bin_tree = 'a 的叶子|'a bin_tree * 'a bin_tree 的节点有趣的树折 g z 空 = z|treefold g z (Node (l, x, r)) = g(x, g(treefold g z l, treefold g ..
发布时间:2022-01-05 18:28:33 其他开发

在 f# 中折叠/递归多路树

我正在尝试为二叉树调整布赖恩折叠 (http://lorgonblog.wordpress.com/2008/04/06/catamorphisms-part-two/) 申请多路树. 来自 Brian 博客的总结: 数据结构: type Tree=|(*data*)'a * (*left*)Tree的节点* (*右*)树|叶子让 tree7 = Node(4, Node(2 ..
发布时间:2022-01-05 10:28:15 其他开发

List.fold 和 List.foldBack 的区别示例

我对 List.fold 和 List.foldBack 之间区别的理解是 foldBack 以相反的顺序迭代其列表.这两个函数都会从列表中的项目中累加结果. 我在想出一个更好的例子时遇到了麻烦,最好在列表上折叠.在我提出的示例中,如果函数逻辑执行相同的操作,则 fold 和 foldBack 的结果相同. []让``List.foldBack 从右到左累积一个值``() =让列表 = [ ..
发布时间:2022-01-05 10:00:46 其他开发

如何根据reduce定义map、filter和reverse等操作?

在此博客条目中,“JavaScript 中的 CSP 和转换器",作者声明: 首先,我们必须意识到许多数组(或其他集合)操作,如map、filter 和reverse 可以用术语定义reduce. 我的问题是:如何根据reduce定义map、filter和reverse等操作?您能否提供Clojure中的示例? 解决方案 这是真的,如果我们不关心懒惰的话.在 Clojure 中 ..
发布时间:2022-01-02 22:52:01 其他开发

折叠和减少的区别?

尝试学习 F#,但在尝试区分 折叠 和 减少.折叠似乎做了同样的事情,但需要一个额外的参数.这两个功能的存在是否有正当理由,或者它们是为了适应不同背景的人?(例如:C# 中的字符串和字符串) 这是从示例中复制的代码片段: 让 sumAList 列表 =List.reduce (fun acc elem -> acc + elem) 列表让 sumAFoldingList 列表 =List. ..
发布时间:2022-01-02 13:58:53 其他开发

为什么这个 Haskell 代码可以成功地处理无限列表?

我有一些 Haskell 代码确实可以在无限列表上正常工作,但我不明白 为什么它可以成功地做到这一点.(我修改了我的原始代码——它没有处理无限列表——从其他一些在线代码中合并一些东西,突然我发现它可以工作,但不知道为什么). myAny :: (a -> Bool) ->[a] ->布尔值myAny p list = foldr step False list在哪里步骤项目 acc = p 项目 ..
发布时间:2022-01-02 13:58:14 其他开发

Scala 中 foldLeft 和 reduceLeft 的区别

我已经了解了 foldLeft 和 reduceLeft 之间的基本区别 左折叠: 必须传递初始值 reduceLeft: 将集合的第一个元素作为初始值 如果集合为空则抛出异常 还有其他区别吗? 有两种功能相似的方法有什么具体原因吗? 解决方案 在给出实际答案之前,这里有几点需要提及: 你的问题与left没有任何关系,而是关于reduce和fold ..

你怎么知道什么时候用左折叠,什么时候用右折叠?

我知道向左折叠会产生左倾树,向右折叠会产生右倾树,但是当我伸手去折叠时,我有时会发现自己陷入了令人头疼的想法中,试图确定哪个那种折叠是合适的.我通常最终会展开整个问题,并逐步执行 fold 函数的实现,因为它适用于我的问题. 所以我想知道的是: 确定向左折叠还是向右折叠有哪些经验法则? 鉴于我面临的问题,我如何快速决定使用哪种折叠方式? Scala by Example (PD ..
发布时间:2022-01-02 13:34:18 其他开发

与函数式编程中的“折叠"函数等效的“pythonic"是什么?

在 Haskell 中实现以下内容的最惯用的方法是什么: foldl (+) 0 [1,2,3,4,5]-->15 或者它在 Ruby 中的等价物: [1,2,3,4,5].inject(0) {|m,x|米+x}#>15 显然,Python 提供了 reduce 函数,它是 fold 的实现,与上面完全一样,但是,我被告知“pythonic"编程方式是避免 lambda 术语和高阶函数, ..
发布时间:2022-01-02 13:28:12 Python

`any`/`all` 的 Haskell/GHC 性能

我为 Haskell 的内置 [] 列表数据编写了量化函数 exists、forall 和 none类型.在很多情况下,这些似乎比 Prelude/Data.Lists any 和 all 更有效.我天真地怀疑这种性能是由于 any 和 all 使用 Θ(n) 折叠实现的.由于我对 Haskell 比较陌生,我想我一定是搞错了,或者说这种现象是有原因的. 来自Data.Foldable: ..
发布时间:2022-01-01 18:28:57 其他开发

为什么在 Spark 中需要折叠动作?

我有一个愚蠢的问题,涉及fold 和PySpark 中的reduce.我理解这两种方法之间的区别,但是,如果两者都需要应用的函数是一个可交换的幺半群,我无法找出一个例子,其中 fold 不能被reduce`替代. 另外,在fold的PySpark实现中使用了acc = op(obj, acc),为什么使用这个操作顺序而不是acc =op(acc, obj)?(这第二个顺序对我来说听起来更接近 ..
发布时间:2021-12-22 21:19:52 其他开发

在无限列表上左右折叠

我对 Learn You A Haskell 中的以下段落有疑问(imo 好书,不是贬低它): 一个很大的区别是对的折叠适用于无限列表,而左边的则不能!把它很明显,如果你在某个时候拿了一个无限列表然后把它折叠起来从右边开始,您最终会到达列表的开头.然而,如果你在一个点上取一个无限列表并且你试图折叠从左往上,你永远不会走到尽头! 我就是不明白这个.如果你拿一个无限列表并尝试从右边折叠它, ..
发布时间:2021-12-14 12:27:34 其他开发