我正在尝试找到对 DataKinds 扩展的解释,这对我来说是有意义的,因为我只阅读了 Learn You a Haskell。有没有一个标准的资源对我来说是有意义的,我所学的很少?
编辑:例如文档说
使用 -XDataKinds,GHC 自动将每个合适的数据类型提升为一种类型,并将其(值)构造函数提升为类型构造函数。以下类型
并给出了例子
data Nat = Ze | Su Nat
产生以下种类和类型构造函数:
Nat :: BOX
Ze :: Nat
Su :: Nat -> Nat
我不明白这一点。虽然我不明白什么BOX
意思,但这些陈述似乎说明了 ZeZe :: Nat
和Su :: Nat -> Nat
Su 是正常的数据构造函数的情况,正如您期望在 ghci 中看到的那样
Prelude> :t Su
Su :: Nat -> Nat