DeepAI AI Chat
Log In Sign Up

Pure Pattern Calculus à la de Bruijn

by   Alexis Martin, et al.

It is well-known in the field of programming languages that dealing with variable names and binders may lead to conflicts such as undesired captures when implementing interpreters or compilers. This situation has been overcome by resorting to de Bruijn indices for calculi where binders capture only one variable name, like the λ-calculus. The advantage of this approach relies on the fact that so-called α-equivalence becomes syntactical equality when working with indices. In recent years pattern calculi have gained considerable attention given their expressiveness. They turn out to be notoriously convenient to study the foundations of modern functional programming languages modeling features like pattern matching, path polymorphism, pattern polymorphism, etc. However, the literature falls short when it comes to dealing with α-conversion and binders capturing simultaneously several variable names. Such is the case of the Pure Pattern Calculus (PPC): a natural extension of λ-calculus that allows to abstract virtually any term. This paper extends de Bruijn's ideas to properly overcome the multi-binding problem by introducing a novel presentation of PPC with bidimensional indices, in an effort to implement a prototype for a typed functional programming language based on PPC that captures path polymorphism.


page 1

page 2

page 3

page 4


EOLANG and phi-calculus

Object-oriented programming (OOP) is one of the most popular paradigms u...

L-types for resource awareness: an implicit name approach

Since the early work of Church on λI-calculus and Gentzen on structural ...

A case for DOT: Theoretical Foundations for Objects With Pattern Matching and GADT-style Reasoning

Many programming languages in the OO tradition now support pattern match...

Local Reasoning for Robust Observational Equivalence

We propose a new core calculus for programming languages with effects, i...

Using Pi-Calculus Names as Locks

Locks are a classic data structure for concurrent programming. We introd...

Computation Against a Neighbour

Recent works in contexts like the Internet of Things (IoT) and large-sca...

No more, no less - A formal model for serverless computing

Serverless computing, also known as Functions-as-a-Service, is a recent ...