2015-09-26 6 views
15

माँगना जब हास्केल में [Int] और [] की तरह के लिए पूछ रहा मिलती है:स्काला में एक प्रकार की तरह बनाम हास्केल

Prelude> :k [Int] 
[Int] :: * 
Prelude> :k [] 
[] :: * -> * 

जो समझ में आता है: पहले एक एक उचित प्रकार है और दूसरा एक एक है उच्च प्रकार का प्रकार।

लेकिन जब मैं स्काला में भी ऐसा ही:

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. 

... यह कहना है दोनों उच्च kinded प्रकार हैं। क्यों पहला व्यक्ति उचित प्रकार के रूप में वर्गीकृत नहीं किया जाता है? इस अंतर का कारण क्या है?

+2

यह पहले एक बस नहीं करता है * देखना * 'int' (लगता है यह बस 'scala.collection.immutable.List' के बारे में भी बात करता है – Carsten

उत्तर

6

ऐसा लगता है कि पूरी तरह से अच्छी तरह से scalaList[Int] में [Int] हिस्सा देखता है, लेकिन इसे अनदेखा करना और हमेशा "बाहरी" जानबूझकर टाइप पर देखने के लिए चुनता है।

यदि यह सही नहीं थे, तो type ListOfInt = List[Int]:k -v ListOfInt के बाद प्राप्त होते हैं * नहीं * -> * लेकिन यह है कि ऐसा नहीं है:

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

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> type ListOfInt = List[Int] 
defined type alias ListOfInt 

scala> :k -v ListOfInt 
scala.collection.immutable.List's kind is F[+A] 
* -(+)-> * 
This is a type constructor: a 1st-order-kinded type. 
संबंधित मुद्दे