【发布时间】:2019-05-29 22:15:16
【问题描述】:
我在一些地方看到过这种'[] 和': 语法,尤其是在HList 或HVect 等异构列表包中。
例如,异构向量HVect定义为
data HVect (ts :: [*]) where
HNil :: HVect '[]
(:&:) :: !t -> !(HVect ts) -> HVect (t ': ts)
在 GHCi 中,扩展名为 TemplateHaskell 或 DataKinds,我明白了
> :t '[]
'[] :: template-haskell-2.13.0.0:Language.Haskell.TH.Syntax.Name
> :t '(:)
'(:) :: template-haskell-2.13.0.0:Language.Haskell.TH.Syntax.Name
我的印象是这与依赖类型和种类等有关,与模板 haskell 无关。
搜索引擎和hoogle 和hayoo 处理带有'[] 或': 的查询相当糟糕,因此问题是:这些'[] 和': 的名称是什么东西? 非常欢迎提供文档或教程。
【问题讨论】:
标签: haskell types type-level-computation data-kinds heterogeneous-array