gpt4 book ai didi

ats - ATS 列表中的 reduce 运算符的名称是什么?

转载 作者:行者123 更新时间:2023-12-05 06:41:29 27 4
gpt4 key购买 nike

假设我想对列表中的整数求和。我可以通过在列表上应用初始值为 0 的 reduce 运算符和加法函数来做到这一点。 ATS中reduce算子叫什么名字?

最佳答案

“reduce”这个名字有点含糊。它可能意味着 reduceLeft 或 reduceRight。在 ATS 中,“减少”称为“折叠”。有“foldleft”和“foldright”,前者是尾递归的,而后者不是。例如,sumup 可以实现如下:

//
fun
sumup(xs: list0(int)): int =
(xs).foldleft(TYPE{int})(0, lam(r, x) => r+x)
//
// If dot-notation is to be spared, please write:
fun
sumup(xs: list0(int)): int =
list0_foldleft<int><int>(xs, 0, lam(r, x) => r+x)
//

也可以使用 foldright:

fun
sumup(xs: list0(int)): int =
(xs).foldright(TYPE{int})(lam(r, x) => r+x, 0)

但是如果 xs 是一个很长的列表(例如,包含 100 万个元素),这个版本的 sumup 可能会导致堆栈溢出。

关于ats - ATS 列表中的 reduce 运算符的名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468257/

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