[Haskell] kind

类型可以看做是值的“标签”,用来区分不同种类的值。
kind可以看做是类型的“标签”,用来区分不同的类型。

例如:

ghci> :k Int
Int :: *

kind为“*”,表示Int是一个具体类型。
具体类型是那些不接受类型参数的类型。
值的类型,只能是一个具体类型。

ghci> :k Maybe
Maybe :: * -> *

* -> *”这种kind,说明Maybe类型构造器,接受一个具体类型作为参数,返回一个具体类型。

ghci> :k Maybe Int
Maybe Int :: *

ghci> :k Either
Either :: * -> * -> *

这说明Either接受两个具体类型作为参数,返回一个具体类型。

ghci> :k Either String
Either String :: * -> *

ghci> :k Either String Int
Either :: *

我们看Functor的定义,

class Functor f where
fmap :: (a -> b) -> f a -> f b

这说明,

> :k f
f :: * -> *
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容