paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Closure-Free Functional Programming in a Two-Level Type Theory

两级类型论中的无闭包函数式编程
ICFP 8(ICFP)2024匹配度 2/10 · 论文属于类型论与编译代码生成方向,研究两级类型论与无闭包编译,与用户核心关注的静态分析、LLM/Agent、浮点程序分析、贝叶斯程序分析均无直接关联;仅在“程序语言/函数式编程”这一广义层面上相关。引用 5 inbox
András Kovács
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出两级类型论,将依赖类型编译期语言与无闭包一阶对象语言结合,保证抽象不产生运行时闭包。

函数式编程中的 monadic bind 等高阶抽象常依赖通用编译器优化来消除运行时闭包,但 GHC 等无法提供强保证,用户只能通过内联指令和选项间接控制代码生成。本文提出一种两阶段语言:对象语言是简单类型一阶语言,可无运行时闭包地编译;编译期语言是依赖类型论;两者整合为两级类型论。作者展示两个应用:用 staging 开发 monad 与 monad transformer,复用 Haskell 生态中的大部分定义并消除抽象开销;用依赖类型给出 pull-based stream fusion,其中 concatMap 可保证融合。工作提供 Agda 实现及带类型 Template Haskell 实现。

问题
函数式编程中的高阶抽象会引入运行时闭包,依赖通用编译器优化难以保证消除,且用户缺乏直接、可靠的代码生成控制手段。
方法
提出两级类型论,将依赖类型的编译期语言与简单类型一阶对象语言结合,通过 staging 生成无闭包代码。
评估
在 Agda 和 typed Template Haskell 中实现该语言,并通过 monad/monad transformer 与 pull-based stream fusion 两个案例展示抽象开销消除和保证融合。
原文摘要(Abstract)

Many abstraction tools in functional programming rely heavily on general-purpose compiler optimization to achieve adequate performance. For example, monadic binding is a higher-order function which yields runtime closures in the absence of sufficient compile-time inlining and beta-reductions, thereby significantly degrading performance. In current systems such as the Glasgow Haskell Compiler, there is no strong guarantee that general-purpose optimization can eliminate abstraction overheads, and users only have indirect and fragile control over code generation through inlining directives and compiler options. We propose a two-stage language to simultaneously get strong guarantees about code generation and strong abstraction features. The object language is a simply-typed first-order language which can be compiled without runtime closures. The compile-time language is a dependent type theory. The two are integrated in a two-level type theory. We demonstrate two applications of the system. First, we develop monads and monad transformers. Here, abstraction overheads are eliminated by staging and we can reuse almost all definitions from the existing Haskell ecosystem. Second, we develop pull-based stream fusion. Here we make essential use of dependent types to give a concise definition of a concatMap operation with guaranteed fusion. We provide an Agda implementation and a typed Template Haskell implementation of these developments.

链接与引用

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

BibTeX
@article{Kovacs24,
  title = {Closure-Free Functional Programming in a Two-Level Type Theory},
  author = {András Kovács},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {ICFP},
  year = {2024},
  doi = {10.1145/3674648}
}