paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Prototyping a functional language using higher-order logic programming: a functional pearl on learning the ways of λProlog/Makam

使用高阶逻辑编程原型化函数式语言:一篇关于学习 λProlog/Makam 的函数式珍珠
ICFP 2(ICFP)2018匹配度 2/10 · 论文聚焦于用 λProlog/Makam 进行带复杂类型系统的函数式语言原型实现,属于逻辑编程与语言设计方向,但未涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析等用户核心研究问题。引用 1 inbox
Antonis Stampoulis, Adam Chlipala
crossref: 2026-09-10

AI 速览

一句话:展示如何用 λProlog/Makam 的高阶逻辑编程快速原型化带复杂类型系统的函数式语言实现。

本文是一篇函数式珍珠,论证高阶逻辑编程(以 λProlog 设计为代表)是快速原型化复杂类型系统语言实现的理想工具。作者以准文学化方式开发一个类型检查器,从若干复杂特性逐步扩展到带代数数据类型与类型泛化的 ML 风格核心,并加入可泛化于单独定义项语言的 staging 构造。每次新增特性几乎无需改动已有代码。为应对对象语言中的复杂变量绑定模式与通用结构遍历,他们在 λProlog 中引入 GADT 与泛型编程等新构造,并以教程风格介绍 Makam 这一 λProlog 新实现。

问题
为具有复杂类型系统的编程语言快速构建实现原型通常成本高,且需灵活处理变量绑定与通用代码遍历。
方法
采用 λProlog 式高阶逻辑编程及 Makam 实现,以准文学化、逐步增量的方式构建类型检查器,并引入 GADT 与泛型编程等构造。
评估
通过逐步加入 ML 风格核心、代数数据类型、类型泛化与 staging 等特性,展示增量扩展时对既有代码改动极小;属于案例研究而非定量评估。
原文摘要(Abstract)

We demonstrate how the framework of higher-order logic programming , as exemplified in the λProlog language design, is a prime vehicle for rapid prototyping of implementations for programming languages with sophisticated type systems. We present the literate development of a type checker for a language with a number of complicated features, culminating in a standard ML-style core with algebraic datatypes and type generalization, extended with staging constructs that are generic over a separately defined language of terms. We add each new feature in sequence, with little to no changes to existing code. Scaling the higher-order logic programming approach to this setting required us to develop approaches to challenges like complex variable binding patterns in object languages and performing generic structural traversals of code, making use of novel constructions in the setting of λProlog, such as GADTs and generic programming. For our development, we make use of Makam, a new implementation of λProlog, which we introduce in tutorial style as part of our (quasi-)literate development.

链接与引用

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

BibTeX
@article{paperbot296,
  title = {Prototyping a functional language using higher-order logic programming: a functional pearl on learning the ways of λProlog/Makam},
  author = {Antonis Stampoulis and Adam Chlipala},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {2},
  number = {ICFP},
  year = {2018},
  doi = {10.1145/3236788}
}