参数化组合数据类型

摘要:组合数据类型在实现编程语言和处理抽象语法树方面具有很多优势。基于Swierstra的数据类型“a la carte”,我们使用Haskell库来实现CDTs,该库能够以模块化和可扩展的方式定义递归数据类型和对其进行函数操作。虽然CDTs提供了分析和操作AST的强大工具,但它们缺乏变量绑定的便捷表示。在本文中,我们通过将CDTs框架与Chlipala的参数化高阶抽象语法(PHOAS)结合起来解决了这个问题。我们展示了如何通过从函数子到双函数子的泛化来捕捉PHOAS,同时仍保持原始CDTs实现的特性,特别是其模块化性。与以往的方法不同的是,我们避免了使用所谓的奇异术语而不使用抽象类型:这在我们希望对检查递归计算的CDTs执行变换(如常量折叠)时非常重要。

作者:Patrick Bahr (Department of Computer Science, University of Copenhagen), Tom Hvitved (Department of Computer Science, University of Copenhagen)

论文ID:1202.2917

分类:Programming Languages

分类简称:cs.PL

提交时间:2012-02-15

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