Pure Pattern Calculus à la de Bruijn

06/13/2020
by   Alexis Martin, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/26/2021

EOLANG and phi-calculus

Object-oriented programming (OOP) is one of the most popular paradigms u...
research
12/21/2021

L-types for resource awareness: an implicit name approach

Since the early work of Church on λI-calculus and Gentzen on structural ...
research
09/15/2022

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...
research
07/02/2019

Local Reasoning for Robust Observational Equivalence

We propose a new core calculus for programming languages with effects, i...
research
09/13/2023

Using Pi-Calculus Names as Locks

Locks are a classic data structure for concurrent programming. We introd...
research
12/15/2020

Computation Against a Neighbour

Recent works in contexts like the Internet of Things (IoT) and large-sca...
research
03/19/2019

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

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

Please sign up or login with your details

Forgot password? Click here to reset