促进复杂的GADT

时间:2014-12-17 15:00:13

标签: 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

也就是说,BazFoo a的异类列表,其中aBar约束。

有没有办法手动创建此数据类型的推广版本?我该怎么做呢?可以宣布吗?我可以制作Foo的虚拟Haskell98版本,并将其分成模块或其他东西吗?理想情况下,我想保留约束上下文,但我认为没有Constraint排序。任何想法都会非常有用!

0 个答案:

没有答案