Formalizing φ-calculus: a purely object-oriented calculus of decorated objects

04/15/2022
by   Nikolai Kudasov, et al.
0

Many calculi exist for modelling various features of object-oriented languages. Many of them are based on λ-calculus and focus either on statically typed class-based languages or dynamic prototype-based languages. We formalize untyped calculus of decorated objects, informally presented by Bugayenko, which is defined in terms of objects and relies on decoration as a primary mechanism of object extension. It is not based on λ-calculus, yet with only four basic syntactic constructions is just as complete. We prove the calculus is confluent (i.e. possesses Church-Rosser property), and introduce an abstract machine for call-by-name evaluation. Finally, we provide a sound translation to λ-calculus with records.

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
08/13/2018

A prototype-based approach to object reclassification

We investigate, in the context of functional prototype-based lan- guages...
research
07/09/2023

Type-Preserving Compilation of Class-Based Languages

The Dependent Object Type (DOT) calculus was designed to put Scala on a ...
research
07/09/2023

A Complete Finite Equational Axiomatisation of the Fracterm Calculus for Common Meadows

We analyse abstract data types that model numerical structures with a co...
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
01/10/2013

Toward General Analysis of Recursive Probability Models

There is increasing interest within the research community in the design...
research
04/21/2022

Decomposition Without Regret

Programming languages are embracing both functional and object-oriented ...

Please sign up or login with your details

Forgot password? Click here to reset