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一种.任何想法都会非常有用!