gpt4 book ai didi

.net - reduce 和 reduceBack 之间有什么区别吗

转载 作者:行者123 更新时间:2023-12-04 16:40:29 28 4
gpt4 key购买 nike

我正在从 msdn 学习 f# 并查看并尝试 reduce 和 reduce back,我找不到任何区别,签名是相同的
('T -> 'T -> 'T) -> 'T list -> 'T
并且它们都在空列表上抛出相同的错误,那么为什么有 2 个,应该有一些区别

最佳答案

其他人已经解释了差异 - 他们以不同的顺序减少元素。

对于可以与 reduce 一起使用的大多数操作或 reduceBack ,差异实际上并不重要。用更数学的术语来说,如果您的操作是 associative (例如数字运算、最大值、最小值或求和函数、列表连接等)那么两者的行为相同。

您可以很好地看到差异的一个示例是构建一棵树,因为这正好显示了评估的工作原理:

type Tree = 
| Leaf of int
| Node of Tree * Tree

[ for n in 0 .. 3 -> Leaf n]
|> List.reduce (fun a b -> Node(a, b))

[ for n in 0 .. 3 -> Leaf n]
|> List.reduceBack (fun a b -> Node(a, b))

这是您得到的两棵树作为结果(但请注意,如果将它们展平,则会得到相同的列表!)
          reduce        reduceBack
-------------------------------------
tree: /\ /\
/\ 3 0 /\
/\ 2 1 /\
0 1 2 3
-------------------------------------
flat: 0 1 2 3 0 1 2 3

关于.net - reduce 和 reduceBack 之间有什么区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10977762/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com