我正在阅读给予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 `]'