在Scala中推断出正确类型的lambda

时间:2013-03-26 12:13:37

标签: scala type-inference

为什么编译器无法正确推断出xy的类型? 我已经阅读了一些关于Scala类型推断的文章,但仍然无法弄清楚为什么它是不可能的。

object Test {
    def main(args: Array[String]) {
        def add(x: Int, y: Int) = x + y
        val f = (x,y) => add(y,x) // error: missing parameter type
    }
}

1 个答案:

答案 0 :(得分:2)

因为add可能会被其他类型重载,因此实现它甚至可以处理像你这样的简单情况会给编译器带来很多复杂性。

修改

你可能知道,haskell能够推断出这种声明的类型,但这只是因为haskell不支持重载这一事实。