Ath*_*ark 9 haskell gadt dependent-type data-kinds
我最近一直在玩弄-XDataKinds
,并想知道为什么Foo
下面不会自动提升:
{-# LANGUAGE
GADTs
, DataKinds
, KindSignatures #-}
import Data.HList
data Foo a where
Foo :: Bar a =>
a -> Foo a
data Baz where
Baz :: (a ~ HList (l :: [Foo *])) =>
a -> Baz
Run Code Online (Sandbox Code Playgroud)
也就是说,Baz
是一个异类的列表Foo a
,其中a
受到约束Bar
.
有没有办法手动创建此数据类型的升级版本?我该怎么做呢?可以申报种类吗?我可以制作一个虚拟的Haskell98版本Foo
,并将其分成模块或其他东西吗?理想情况下,我想保留约束上下文,但我认为没有Constraint
一种.任何想法都会非常有用!