Prototyping a functional language using higher-order logic programming: A functional pearl on learning the ways of prolog/makam

1Citations
Citations of this article
15Readers
Mendeley users who have this article in their library.

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.

Cite

CITATION STYLE

APA

Stampoulis, A., & Chlipala, A. (2018). Prototyping a functional language using higher-order logic programming: A functional pearl on learning the ways of prolog/makam. Proceedings of the ACM on Programming Languages, 2(ICFP). https://doi.org/10.1145/3236788

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free