相关疑难解决方法(0)

ghc-7.6依赖类型的类实例

异构列表是为ghc 7.6的新依赖类型工具提供的示例之一:

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

示例列表"li"编译正常:

li  = HCons "Int: " (HCons 234 (HCons "Integer: " (HCons 129877645 HNil)))
Run Code Online (Sandbox Code Playgroud)

显然我们希望HList在Show类中,但我只能提出以下使用相互递归约束(超类)的工作类实例化:

instance Show (HList '[]) where 
  show HNil = "[]"

instance (Show a, Show' (HList t)) => Show (HList (a ': t)) where
  show l  = "[" ++ show' l ++ "]"

class Show' a where
  show' :: a -> String

instance Show' …
Run Code Online (Sandbox Code Playgroud)

haskell ghc dependent-type

7
推荐指数
1
解决办法
309
查看次数

标签 统计

dependent-type ×1

ghc ×1

haskell ×1