Scala 要求输入';斯卡拉和哈斯克尔的比赛
在Haskell中询问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
[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
)