Corecursive Featherweight Java

  • Authors:
  • Davide Ancona;Elena Zucca

  • Affiliations:
  • Università di Genova, Genova, Italy;Università di Genova, Genova, Italy

  • Venue:
  • Proceedings of the 14th Workshop on Formal Techniques for Java-like Programs
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Despite cyclic data structures occur often in many application domains, object-oriented programming languages provide poor abstraction mechanisms for dealing with cyclic objects. Such a deficiency is reflected also in the research on theoretical foundation of object-oriented languages; for instance, Featherweigh Java (FJ), which is one of the most widespread object-oriented calculi, does not allow creation and manipulation of cyclic objects. We propose an extension to Featherweight Java, called COFJ, where it is possible to define cyclic objects, abstractly corresponding to regular terms, and where an abstraction mechanism, called regular corecursion, is provided for supporting implementation of coinductive operations on cyclic objects. We formally define the operational semantics of COFJ, and provide a handful of examples showing the expressive power of regular corecursion; such a mechanism promotes a novel programming style particularly well-suited for implementing cyclic data structures, and for supporting coinductive reasoning.