paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Fluent APIs in Functional Languages

函数式语言中的 Fluent API
OOPSLA 7(OOPSLA1)2023匹配度 2/10 · 该论文属于函数式编程、嵌入式DSL与类型推断方向,与用户核心关注的 PL×AI、静态分析×ML/Agent、浮点程序分析及贝叶斯程序分析均无直接关联;仅在通用PL/DSL技术上有弱相关性。引用 3 inbox
Ori Roth, Yossi Gil
crossref: 2026-09-10

AI 速览

一句话:提出在无函数名重载的函数式语言中借助参数多态与 Hindley-Milner 类型推断实现编译期检查的 Fluent API。

Fluent API 是一种面向对象模式,用于构建优雅的 API 和嵌入式 DSL;智能 Fluent API 能在编译期强制 API 协议或 DSL 语法,但其实现通常依赖函数名重载,因此在函数式语言中难以实现。本文研究如何在缺少名字重载的函数式编程语言中实现 Fluent API,核心方法是利用参数多态和 Hindley-Milner 类型推断来编码协议约束。该实现能够支持正则语言类和确定性上下文无关语言类中的 Fluent API 协议,甚至可表达超出这些类别的协议,表明函数式语言同样可以实现具有编译期协议检查能力的 Fluent API 与嵌入式 DSL。

问题
Fluent API 常用于优雅 API 与嵌入式 DSL,并可在编译期检查协议,但传统实现依赖函数名重载,难以移植到函数式语言。
方法
不依赖名字重载,而是利用参数多态与 Hindley-Milner 类型推断,在函数式语言中编码并实现 Fluent API 协议。
评估
以实现所支持的语言类范围进行评估:可支持正则语言类与确定性上下文无关语言类中的 Fluent API 协议,甚至可覆盖超出这些类别的协议。
原文摘要(Abstract)

Fluent API is an object-oriented pattern for elegant APIs and embedded DSLs. A smart fluent API can enforce the API protocol or DSL syntax at compile time. Since fluent API implementations typically rely on overloading function names, they are hard to realize in functional programming languages. This work shows how functional fluent APIs can be implemented in the absence of name overloading, by relying on parametric polymorphism and Hindley-Milner type inference. The implementation supports fluent API protocols in the regular- and deterministic context-free language classes, and even beyond.

链接与引用

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

BibTeX
@article{paperbot2036,
  title = {Fluent APIs in Functional Languages},
  author = {Ori Roth and Yossi Gil},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA1},
  year = {2023},
  doi = {10.1145/3586057}
}