参数化组合数据类型
编程语言
2012-02-15 v1
摘要
在之前的工作中,我们阐述了组合数据类型 (CDTs) 在实现编程语言以及处理抽象语法树 (ASTs) 方面的优势。基于 Swierstra 的 data types \'a la carte 方法,CDTs 被实现为一个 Haskell 库,能够以模块化和可扩展的方式定义递归数据类型及其上的函数。尽管 CDTs 为分析和操作 ASTs 提供了强大的工具,但它们缺乏对变量绑定符的便捷表示。在本文中,我们通过将 CDTs 框架与 Chlipala 的参数化高阶抽象语法 (PHOAS) 相结合来弥补这一不足。我们展示了如何将从函子到双函子 (difunctors) 的推广使我们能够在保持 CDTs 原始实现特性(特别是其模块化)的同时捕捉 PHOAS。与以往的方法不同,我们在不依赖抽象类型的情况下避免了所谓的奇异项 (exotic terms):当我们要对检查递归计算所得 CDTs 的 CDTs 执行变换(例如常量折叠)时,这一点至关重要。
引用
@article{arxiv.1202.2917,
title = {Parametric Compositional Data Types},
author = {Patrick Bahr and Tom Hvitved},
journal= {arXiv preprint arXiv:1202.2917},
year = {2012}
}
备注
In Proceedings MSFP 2012, arXiv:1202.2407