避免尖锐边缘的替代捕获

摘要:使用编译器正确地操作程序术语非常困难,因为需要避免名称捕获。《Glasgow Haskell Compiler inliner》中的rapier是一种先进的技术,用于对使用显式名称表示的表达式进行快速、无状态的避免捕获替换。然而,它是一种尖端工具:它的不变量很复杂,并且需要在使用它的整个编译器中进行维护。我们描述了foil,这是rapier的一个扩展,利用Haskell的类型系统静态地强制执行rapier的不变量,以防止一类难以找到的错误,但不会增加任何运行时开销。

作者:Dougal Maclaurin, Alexey Radul, Adam Paszke

论文ID:2210.04729

分类:Programming Languages

分类简称:cs.PL

提交时间:2022-10-11

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