gpt4 book ai didi

scala - 在 Scala 中使用 foldLeft 反转

转载 作者:行者123 更新时间:2023-12-01 10:09:13 25 4
gpt4 key购买 nike

def foldLeft[A, B] (as: List[A], z: B) (f: (B, A) => B) : B = as match {
case Nil => z
case Cons(x, xs) => foldLeft(xs, f(z, x))(f)
}

def reverse[A] (as: List[A]): List[A] =
foldLeft(as, List[A]())((h, acc) => Cons(acc, h))

我不确定 foldLeft 中的 List[A] 是 B 类型的。有人可以清除此函数中发生的过程吗?

最佳答案

这个反向实现正在调用 foldLeftA因为它是第一个类型参数( foldLeft#A = A )和 List[A]因为它是第二种类型的参数( foldLeft#B = List[A] )。这是一个类型注释版本,它非常明确:

def reverse[A] (as: List[A]): List[A] =
foldLeft[A, List[A]](as = as: List[A], z = List[A]())(
(h: List[A], acc: A) => Cons(acc, h): List[A]
)

关于scala - 在 Scala 中使用 foldLeft 反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203065/

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