函子对应于镜头,应用对应于双胚: 引入多板

摘要:两个新的范畴化镜的特性描述:一个作为存储共代数,另一个作为某一类共代数上的幺半自然变换。第一个特性描述的存储共代数可以被推广为笛卡尔存储共代数,而这个笛卡尔存储共代数的共代数正好是Uniplate通用编程库中的双支类型。另一方面,函子上的幺半自然变换可以被推广为在更具体的共代数范畴上工作。这个推广结果是Compos通用编程库中的组合类型。一个最初由van Laarhoven猜想的定理证明了这两个推广是同构的,因此Uniplate和Compos库支持单递归类型的核心数据类型是相同的。Uniplate和Compos库都以不同的方式将这个核心功能推广到支持相互递归类型。本文提出了一个第三种扩展来支持相互递归数据类型,它和Compos一样强大,和Uniplate一样易于使用。这个名为Multiplate的建议只需要在Haskell的常规类型类机制之外使用等级3多态性。

作者:Russell O'Connor

论文ID:1103.2841

分类:Programming Languages

分类简称:cs.PL

提交时间:2011-07-12

PDF 下载: 英文版 中文版pdf翻译中