跳到主要内容

模块化感应系列

祥尚高和杰里米·吉本斯

摘要

鼓励依赖类型的程序员使用归纳族来集成约束和数据构造。在不同的上下文中使用不同的约束,导致同一数据结构的数据类型版本不同。例如,序列可能会受到长度或元素排序的约束,从而为相同的序列底层数据结构产生不同的数据类型“向量”和“排序列表”。这些结构相似的数据类型的通用操作的模块化实现是一个长期存在的问题。我们提出了一个数据类型泛型解决方案,其中我们公理化了数据类型及其更精细版本之间的一系列同构,作为数据类型细化,并表明McBride的装饰可以转化为此类细化。通过装饰诱导的细化,可以针对每个约束分别证明操作的相关属性,并且在程序员选择几个约束来施加于基本数据类型并合成包含这些约束的新数据类型后,可以定期升级操作以使用合成的数据类型。

这是对之前在WGP’11上发表的同名论文.

补充材料

附带的Agda代码可以在此处找到:azip存档的Agda源文件或语法高亮、可浏览的HTML版本.

日记账
信息学进展
编号
10
65−88岁
年份
2013