用范畴论写代码,编译成 SQL

Arrows to arrows, categories to queries (2025)

我最近闲着没事,写了一个叫 catlang 的编程语言,它的编译器能直接输出一条巨大的 SELECT 语句。这不是新的查询语言,而是一门真正的编程语言,运行在 postgres 中就能得到程序结果。我这么做的初衷,是为了测试语言的核心特性:其中间语言是一堆抽象的范畴论(category theory)概念。通过箭头(arrow)语法糖,我能写出类似 while 循环的逻辑,然后将其“脱糖”成纯粹的范畴论中间表示。最终,这些抽象的数学符号被转换成极其冗长、甚至有点“亵渎神明”的 SQL 代码。虽然过程绕弯,但这展示了如何通过范畴论的代数语义,将代码编译到各种奇怪的领域。

这并不是什么新的查询语言,而是一门编程语言,它的编译器会吐出一条巨大的 SELECT 语句。

同日更多故事

2026-11-04