在 Haskell 中声明和使用种类
Declaring and working with Kinds in Haskell
我最近一直在玩 Haskell 的 -XDataKinds
功能,发现自己想要 创建 一种。
我不确定我的愿望是否能实现,但从 Edward Kmett 的 constraints package 看来,似乎有一个已声明的种类 Constraint
(带有排序 BOX
),它说是在GHC.Prim
中定义,但是我找不到。
有什么方法可以在 Haskell 或 GHC 中手动声明一个种类吗?这可能需要手动断言用 data
声明的数据类型是正确的类型。我的想法是这样的:
data Foo :: BOX
data Bar a :: Foo where
Bar :: a -> Bar a
在当前的 GHC(撰写本文时为 7.8)中,不能将新类型的声明与其类型级居民的声明分开。
我最近一直在玩 Haskell 的 -XDataKinds
功能,发现自己想要 创建 一种。
我不确定我的愿望是否能实现,但从 Edward Kmett 的 constraints package 看来,似乎有一个已声明的种类 Constraint
(带有排序 BOX
),它说是在GHC.Prim
中定义,但是我找不到。
有什么方法可以在 Haskell 或 GHC 中手动声明一个种类吗?这可能需要手动断言用 data
声明的数据类型是正确的类型。我的想法是这样的:
data Foo :: BOX
data Bar a :: Foo where
Bar :: a -> Bar a
在当前的 GHC(撰写本文时为 7.8)中,不能将新类型的声明与其类型级居民的声明分开。