paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Relational algebra by way of adjunctions

经由伴随的关系代数
ICFP 2(ICFP)2018匹配度 1/10 · 该论文属于范畴论与关系代数/查询语言的形式语义研究,虽与PL理论相关,但未涉及用户关注的静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析。其形式化与高效实现导向有一定理论价值,但与当前研究画像的核心问题基本无关。引用 15 inbox
Jeremy Gibbons, Fritz Henglein, Ralf Hinze, Nicolas Wu
crossref: 2026-09-10

AI 速览

一句话:用伴随与分级 monad 为关系代数的连接、分组等操作提供范畴论基础,并导向高效实现。

集合、包和列表等 bulk types 是 monad,因而可用基于 comprehension 的记法表达数据库查询;monad 结构能自然解释选择与投影,却无法直接解释关系连接与分组,最多只能表示为笛卡尔积后接选择。论文转向范畴论中的伴随:bulk types 本身也由特定伴随产生,通过关注其他重要伴随,可为标准关系代数的其余操作提供优雅基础。特别地,graded monad 为索引与分组提供数学基础,并直接导向高效实现,甚至可用于连接。该工作以理论构造与示例分析为主,未报告实证评估。

问题
单子(monad)结构能否统一解释标准关系代数,尤其是连接与分组等无法由单子直接刻画的操作。
方法
利用范畴论伴随;将 bulk types 视为由伴随产生,并引入 graded monad 刻画索引与分组。
评估
通过范畴论构造和示例展示标准关系代数操作的解释,并说明其如何导向连接的高效实现;摘要未报告实验评估。
原文摘要(Abstract)

Bulk types such as sets, bags, and lists are monads, and therefore support a notation for database queries based on comprehensions. This fact is the basis of much work on database query languages. The monadic structure easily explains most of standard relational algebra---specifically, selections and projections---allowing for an elegant mathematical foundation for those aspects of database query language design. Most, but not all: monads do not immediately offer an explanation of relational join or grouping, and hence important foundations for those crucial aspects of relational algebra are missing. The best they can offer is cartesian product followed by selection. Adjunctions come to the rescue: like any monad, bulk types also arise from certain adjunctions; we show that by paying due attention to other important adjunctions, we can elegantly explain the rest of standard relational algebra. In particular, graded monads provide a mathematical foundation for indexing and grouping, which leads directly to an efficient implementation, even of joins.

链接与引用

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

BibTeX
@article{paperbot283,
  title = {Relational algebra by way of adjunctions},
  author = {Jeremy Gibbons and Fritz Henglein and Ralf Hinze and Nicolas Wu},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {2},
  number = {ICFP},
  year = {2018},
  doi = {10.1145/3236781}
}