使用可变参数函数进行类型检查

Type checking with a varargs function

如果我定义这个(废话)函数:

def g[A](f: (A*) => A): Int = {
  10
}

为什么编译器类型不检查以下情况?

def add(x: Int, y: Int) = x+ y

g(add)

我的意思是,不应该 (A, A) 键入检查 (A*) 吗?

(A, A) 是一个 元组 (Tuple2),因此它不会对 (A*) 进行类型检查。只有实际取 A* 的函数才能传递给 g,例如:

def add(ints: Int*): Int = ints.sum