中文

函子之于透镜犹如应用函子之于Biplate:引入Multiplate

编程语言 2011-07-12 v2

摘要

本文给出了透镜的两种新的范畴论刻画:一种是存储余单子的余代数,另一种是某类余代数范畴上的幺半自然变换。第一种刻画中的存储余单子可以推广为笛卡尔存储余单子,而该笛卡尔存储余单子的余代数恰好是Uniplate泛型编程库中的Biplate。另一方面,函子上的幺半自然变换可以推广以在更具体的余代数范畴上运作。这种推广恰好是Compos泛型编程库中的compos类型。一个最初由van Laarhoven猜想的定理证明了这两种推广是同构的,因此Uniplate和Compos库中支持单一递归类型泛型编程的核心数据类型是相同的。Uniplate和Compos库以不同方式将此核心功能推广以支持互递归类型。本文提出了支持互递归数据类型的第三种推广,它具有与Compos同等的表达力,且与Uniplate一样易于使用。这个名为Multiplate的方案,除了Haskell常规的类型类机制外,仅需3阶多态。

关键词

引用

@article{arxiv.1103.2841,
  title  = {Functor is to Lens as Applicative is to Biplate: Introducing Multiplate},
  author = {Russell O'Connor},
  journal= {arXiv preprint arXiv:1103.2841},
  year   = {2011}
}

备注

To appear in ACM SIGPLAN 7th Workshop on Generic Programming, Tokyo, 18th September 2011