使用 DataKinds,定义如下
data KFoo = TFoo
介绍种类KFoo :: BOX
和类型TFoo :: KFoo
。为什么我不能继续定义
data TFoo = CFoo
这样CFoo :: TFoo
, TFoo :: KFoo
, KFoo :: BOX
?
是否所有构造函数都需要属于属于该种类的类型*
?如果是这样,为什么?
编辑:当我这样做时,我没有收到错误,因为构造函数和类型共享一个命名空间,但 GHC 允许冲突,因为它将名称消除歧义作为常规类型,而不是提升的构造函数。文档说要以 a 作为前缀'
来引用提升的构造函数。当我将第二行更改为
data 'TFoo = CFoo
我得到错误
错误的类型或类声明头:TFoo