在带有DataKinds的GADT的种类签名中使用非糖列表语法

时间:2014-12-28 03:56:22

标签: haskell gadt data-kinds

我正在阅读给予Haskell促销活动http://dreixel.net/research/pdf/ghp.pdf

我遇到了这种语法(如果你使用{-# LANGUAGE KindSignatures, GADTs, DataKinds, TypeOperators #-},它会起作用):

data HList :: [*] -> * where
    HNil :: HList '[]
    HCons :: a -> HList as -> HList (a ': as)

使用[]检查:info []的信息,告诉我列表的数据类型是:

data [] a = [] | a : [a]

这让我觉得,这种风格也应该有用,因为[] a类型的构造函数现在被提升为一种类型的构造函数:

data HList :: [] * -> * where
    HNil :: HList '[]
    HCons :: a -> HList as -> HList (a ': as)

但它没有,并且给了我这个错误:

parse error on input `]'

0 个答案:

没有答案