推断 NonEmptyList(String, List[Nothing]) 的类型?

Inferring Type of NonEmptyList(String, List[Nothing])?

使用 scalaz.NonEmptyList 进行试验,我试过:

scala> import scalaz.NonEmptyList
import scalaz.NonEmptyList

scala> NonEmptyList("5", Nil)
res0: scalaz.NonEmptyList[java.io.Serializable] = NonEmptyList(5, List())

我误以为ListNonEmptyList#apply的第二个参数(实际上是varargs)。

但是,为什么 java.io.Serializable 显示为类型?

您已经构建了一个包含两个项目的列表,一个 String 和一个 Nil。所以该列表的类型是 NonEmptyList[A],其中 A StringNil 的最低公共超类型,即类型 Serializable。顺便说一句:scala 的普通列表也会发生同样的事情:List("5",Nil)