Prototyping a Functional Language using Higher-Order Logic Programming: A Functional Pearl on Learning the Ways of λProlog/Makam
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.
Mon 24 SepDisplayed time zone: Guadalajara, Mexico City, Monterrey change
13:00 - 14:30 | Program ConstructionResearch Papers at Stifel Theatre Chair(s): J. Garrett Morris University of Kansas, USA | ||
13:00 22mTalk | Prototyping a Functional Language using Higher-Order Logic Programming: A Functional Pearl on Learning the Ways of λProlog/Makam Research Papers DOI | ||
13:22 22mTalk | A Type and Scope Safe Universe of Syntaxes with Binding: Their Semantics and Proofs Research Papers Guillaume Allais Radboud University Nijmegen, Robert Atkey University of Strathclyde, James Chapman , Conor McBride , James McKinna DOI | ||
13:45 22mTalk | Reasonably Programmable Literal Notation Research Papers Link to publication DOI | ||
14:07 22mTalk | Refunctionalization of Abstract Abstract Machines: Bridging the Gap between Abstract Abstract Machines and Abstract Definitional Interpreters (Functional Pearl) Research Papers DOI |