DataKinds では、次のような定義
data KFoo = TFoo
KFoo :: BOX
種類と種類を紹介しTFoo :: KFoo
ます。なぜ私は定義に進むことができないのですか
data TFoo = CFoo
そのようなCFoo :: TFoo
、、?TFoo :: KFoo
KFoo :: BOX
すべてのコンストラクターは、 kind に属する型に属する必要があり*
ますか? もしそうなら、なぜですか?
編集: コンストラクターと型は名前空間を共有するため、これを行ってもエラーは発生しませんが、昇格したコンストラクターではなく通常の型として名前を明確にするため、GHC は競合を許可します。ドキュメント'
には、昇格したコンストラクターを参照するために a をプレフィックスとして付けるように記載されています。その2行目を次のように変更すると
data 'TFoo = CFoo
エラーが発生します
不正な型またはクラス宣言の先頭: TFoo