可逆函数的尾递归转换

摘要:尾递归函数允许进行比一般递归函数更广泛的优化。因此,许多研究致力于转换和优化这类函数,特别是在以继续传递风格(CPS)编写的函数中。虽然CPS转换能够将任何递归函数转换为等效的尾递归函数,但在可逆编程的背景下存在深层次的问题(因为它依赖于问题复杂的特性,如高阶函数)。我们认为,将(局部)可逆性放松到(全局)可逆性可以显著改善情况。基于此,我们提出了一个专门针对可逆函数的尾递归转换算法。关键的洞察力是,由保持可逆性的程序转换引入的函数只需要在转换调用它们的上下文中是可逆的。我们展示了如何使用特定上下文对应的定制数据类型,将可逆递归函数转换为一对作用于该上下文的尾递归函数,其中调用被突出显示,并能够直观地提取出尾递归的逆函数。

作者:Joachim Tilsted Kristensen, Robin Kaarsgaard, Michael Kirkedal Thomsen

论文ID:2302.10049

分类:Programming Languages

分类简称:cs.PL

提交时间:2023-03-01

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