最佳答案
我试图找到一个 DataKinds 扩展的解释,这对我来说是有意义的,因为我只读过 向你学习 Haskell。有没有一个标准的资料来源,可以让我用我所学到的一点点东西来解释这个问题?
编辑: 例如 文件说
通过 -XDataKinds,GHC 自动提升每个合适的数据类型 类型,其(值)构造函数为类型构造函数。 以下类型
并给出了例子
data Nat = Ze | Su Nat
产生下列种类和类型构造函数:
Nat :: BOX
Ze :: Nat
Su :: Nat -> Nat
我不明白。虽然我不明白 BOX
的意思,但是语句 Ze :: Nat
和 Su :: Nat -> Nat
似乎说明了通常情况下 Zeand Su 是正常的数据构造函数,正如您期望在 ghi 中看到的那样
Prelude> :t Su
Su :: Nat -> Nat