paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Tail Recursion Modulo Context: An Equational Approach

尾递归模上下文:一种等式方法
POPL 7(POPL)2023匹配度 2/10 · 论文属于函数式编程与编译器变换/形式语义,关注 TRMC 变换及 Koka 实现,与用户画像中 PL 与 AI/LLM 交叉、浮点程序分析、贝叶斯程序分析等核心方向无直接关联。仅因形式语义与工程实现偏好有极弱交集,因此匹配度很低。引用 9 inbox
Daan Leijen, Anton Lorenzen
crossref: 2026-09-10

AI 速览

一句话:将 TRMc 推广为 TRMC,从规约等式推导通用算法,并在 Koka 实现支持非线性控制的混合版本。

论文将尾递归模 cons(TRMc)推广为尾递归模上下文(TRMC),并从规范计算通用变换算法:抽象上下文需实现应用与复合且满足上下文律。该框架可实例化为 CPS、结合运算、monoid、semiring 与 cons 乘积等;作者用 Minamide 洞演算证明 cons 实例可靠,并基于 Perceus 堆语义论证原地更新。针对 call/cc、shift/reset、代数效应处理器等非线性控制使既有 TRMc 失效的问题,论文扩展堆语义为混合方法以动态适应非线性控制流,并在 Koka 中实现;基准显示 TRMC 变换后的函数不慢于手工替代方案。

问题
TRMc 只针对 cons,且既有方法在 call/cc、shift/reset 或代数效应处理器等非线性控制下失效。
方法
论文用等式规约将 TRMc 推广为 TRMC,抽象上下文需满足上下文律,并用洞演算与 Perceus 堆语义证明 cons 实例及原地更新的可靠性,再扩展为混合堆语义。
评估
在 Koka 中完整实现混合 TRMc,并通过基准测试与手工替代方案进行比较。
原文摘要(Abstract)

The tail-recursion modulo cons transformation can rewrite functions that are not quite tail-recursive into a tail-recursive form that can be executed efficiently. In this article we generalize tail recursion modulo cons (TRMc) to modulo contexts (TRMC), and calculate a general TRMC algorithm from its specification. We can instantiate our general algorithm by providing an implementation of application and composition on abstract contexts, and showing that our context laws_ hold. We provide some known instantiations of TRMC, namely modulo evaluation contexts (CPS), and associative operations , and further instantiantions not so commonly associated with TRMC, such as defunctionalized evaluation contexts, monoids , semirings , exponents , and cons products . We study the modulo cons instantiation in particular and prove that an instantiation using Minamide’s hole calculus is sound. We also calculate a second instantiation in terms of the Perceus heap semantics to precisely reason about the soundness of in-place update. While all previous approaches to TRMc fail in the presence of non-linear control (for example induced by call/cc, shift/reset or algebraic effect handlers), we can elegantly extend the heap semantics to a hybrid approach which dynamically adapts to non-linear control flow. We have a full implementation of hybrid TRMc in the Koka language and our benchmark shows the TRMc transformed functions are always as fast or faster than using manual alternatives.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2109,
  title = {Tail Recursion Modulo Context: An Equational Approach},
  author = {Daan Leijen and Anton Lorenzen},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {POPL},
  year = {2023},
  doi = {10.1145/3571233}
}