Scala 要求输入';斯卡拉和哈斯克尔的比赛

Scala 要求输入';斯卡拉和哈斯克尔的比赛,scala,haskell,higher-kinded-types,Scala,Haskell,Higher Kinded Types,在Haskell中询问[Int]和[]的类型时,我得到: Prelude> :k [Int] [Int] :: * Prelude> :k [] [] :: * -> * 这是有道理的:第一个是一个适当的类型,第二个是一个更高的类型 但当我在Scala中做同样的事情时: scala> :k -v List[Int] scala.collection.immutable.List's kind is F[+A] * -(+)-> * This is a type c

在Haskell中询问
[Int]
[]
的类型时,我得到:

Prelude> :k [Int]
[Int] :: *
Prelude> :k []
[] :: * -> *
这是有道理的:第一个是一个适当的类型,第二个是一个更高的类型

但当我在Scala中做同样的事情时:

scala> :k -v List[Int]
scala.collection.immutable.List's kind is F[+A]
* -(+)-> *
This is a type constructor: a 1st-order-kinded type.

scala> :k -v List
scala.collection.immutable.List's kind is F[+A]
* -(+)-> *
This is a type constructor: a 1st-order-kinded type.

。。。它说这两种类型的人都是更高级的。为什么第一个没有被归类为合适的类型?造成这种差异的原因是什么?

似乎
scala
很好地看到了
List[Int]
中的
[Int]
部分,但却选择忽略它,并总是故意查看“outer”类型

如果这不是真的,那么
type ListOfInt=List[Int]
后跟
:k-v ListOfInt
将产生
*
而不是
*->*
,但情况并非如此:

scala>:k-v列表
scala.collection.immutable.List的种类是F[+A]
* -(+)-> *
这是一个类型构造函数:一阶类型。
scala>:k-v列表[Int]
scala.collection.immutable.List的种类是F[+A]
* -(+)-> *
这是一个类型构造函数:一阶类型。
scala>type ListOfInt=List[Int]
定义的类型别名ListOfInt
scala>:k-v列表
scala.collection.immutable.List的种类是F[+A]
* -(+)-> *
这是一个类型构造函数:一阶类型。

第一个似乎没有看到
int
(它也只谈到了
scala.collection.immutable.List