PDF e-Pub

Section: New Results

Functional programming with $\lambda$-tree syntax

Participants : Ulysse Gerard, Dale Miller, Gabriel Scherer.

We have been designing a new functional programming language, MLTS, that uses the $\lambda$-tree syntax approach to encoding bindings that appear within data structures [17]. In this setting, bindings never become free nor escape their scope: instead, binders in data structures are permitted to move into binders within programs phrases. The design of MLTS—whose concrete syntax is based on that of OCaml—includes additional sites within programs that directly support this movement of bindings. Our description of MLTS includes a typing discipline that naturally extends the typing of OCaml programs.

The operational semantics of MLTS is given using natural semantics for evaluation. We shall view such natural semantics as a logical theory with a rich logic that includes both nominal abstraction and the $\nabla$-quantifier: as a result, the natural semantic specification of MLTS can be given a succinct and elegant presentation.

We have developed a number of examples of how this new programming language can be used. Some of the most convincing of these examples are programs that manipuate untyped $\lambda$-terms. A web-based implementation of an MLTS interpreter is available to anyone with a modern web browser: simply visit https://trymlts.github.io/. Small MLTS programs can be composed and executed using that interpreter.