Kind 之于类型正如类型之于值。可以理解为类型的类型。
Kind 的规则很简单,常规类型的 Kind 是 * ,类型构造器的 Kind 是 P -> Q ,其中 P 和 Q 都是 Kind 。所以 Haskell98 中,所有的 Kind 皆如: *, * -> *, * -> * -> * 等等。GHC引入了一个新的 Kind 叫做 # ,用于表示 unboxed types 。
Haskell98 中, Kind 只在编译器 Kind推导过程 中使用,对程序员来说是不存在的。GHC引入了一个 扩展 ,可以显示指定类型的 Kind ,比如:
Int :: *
Maybe :: * -> *
Maybe Bool :: *
a -> a :: *
[] :: * -> *
(->) :: * -> * -> *
转载请注明出处,收藏或分享这篇文章到:
Website content copyright © by 黄毅. All rights reserved.