小编aav*_*ogt的帖子

这个GADT实际上是否具有代表性的类型角色

此数据类型可以具有type role HCons' representational representational,允许使用coerce添加或删除应用于元素的新类型,而无需遍历列表.

data HNil' = HNil'
data HCons' a b = HCons' a b
Run Code Online (Sandbox Code Playgroud)

但是,这些列表的语法不如具有以下GADT的语法好

data HList (l::[*]) where
    HNil  :: HList '[]
    HCons :: e -> HList l -> HList (e ': l)
Run Code Online (Sandbox Code Playgroud)

我有一个类在这两个表示之间进行转换,这样Prime (HList [a,b]) ~ HCons' a (HCons' b HNil').该课程是否成功?

coerceHList :: Coercible (Prime a) (Prime b) => HList a -> HList b
coerceHList = unsafeCoerce
Run Code Online (Sandbox Code Playgroud)

安全?

haskell gadt

13
推荐指数
1
解决办法
293
查看次数

标签 统计

gadt ×1

haskell ×1