gpt4 book ai didi

scala - 缺少参数类型

转载 作者:行者123 更新时间:2023-12-04 22:44:01 24 4
gpt4 key购买 nike

我在 Scala 中重写了一系列 Haskell 函数,遇到了一个我似乎无法解释的编译错误

错误如下:

missing parameter type
def group[A](xs: List[A]): List[List[A]] = groupBy((a, b) => a == b, xs)
^
missing parameter type
def group[A](xs: List[A]): List[List[A]] = groupBy((a, b) => a == b, xs)
^

代码如下:
object Stuff {
def main(args: Array[String]): Unit = {
val lst = List(1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 7)
println(group(lst))
}

def group[A](xs: List[A]): List[List[A]] = groupBy((a, b) => a == b, xs)
def groupBy[A](fun: (A, A) => Boolean, input: List[A]): List[List[A]] = // stuff
}

我完全不确定这里发生了什么,为什么它提示缺少参数类型。据我所知,一切都已定义

最佳答案

如果您在 groupBy 处提供显式泛型类型参数,它将编译。调用站点:

def group[A](xs: List[A]): List[List[A]] = groupBy[A]((a, b) => a == b, xs)

this post解释为什么 Scala 的类型推断在这种情况下失败。

如果你写 groupBy带有 curried 参数列表的类型信息应该被正确推断:
def group[A](xs: List[A]): List[List[A]] = groupBy(xs)((a, b) => a == b)

def groupBy[A](input: List[A])(fun: (A, A) => Boolean): List[List[A]] = input match {
case Nil => Nil
case (x::xs) =>
val (ys, zs) = span(fun.curried(x), xs)
(x::ys)::groupBy(zs)(fun)
}

关于scala - 缺少参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35721044/

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