arrow
返回

Tail recursion modulo context: An equational approach (extended version)

delete2025-10-24
delete0
delete
OA
AI
D
Daan Leijen *
A
Anton Lorenzen
DOI:10.1017/S0956796825100117delete
delete原文链接
delete分享
delete收藏
摘要

摘要

En 中文
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 context (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 instantiations not so commonly associated with TRMC, such as defunctionalized evaluation contexts, monoids, semirings, exponents, and fields. 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 nonlinear control (e.g., 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 nonlinear 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.
Keyword:
MODEL

期刊

J
Journal of Functional Programming
IF:
0.6
论文数:
8
被引数:
0

机构

M
microsoft
学者数:
384
论文数: 185
被引数: 17
U
University of Edinburgh
学者数:
5.2W
论文数: 4.6W
被引数: 71
引用论文

引用论文

FP²: Fully in-Place Functional Programming
err2023-08-30
err0
PREAI
errLorenzen,Anton; Leijen,Daan; Swierstra,Wouter
err分享
err收藏
err分享
err收藏
err分享
err收藏
err分享
err收藏
err分享
err收藏
学者 查看更多内容