A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cycle therapy: a prescription for fold and unfold on regular trees
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Extending logic programming with coinduction
Extending logic programming with coinduction
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Establishing object invariants with delayed types
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Masked types for sound object initialization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Coinductive Type Systems for Object-Oriented Languages
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Freedom before commitment: a lightweight type system for object initialisation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Coinductive big-step operational semantics for type soundness of Java-like languages
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Verifying complex continuous real-time systems with coinductive CLP(R)
LATA'10 Proceedings of the 4th international conference on Language and Automata Theory and Applications
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Soundness of object-oriented languages with coinductive big-step semantics
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Co-logic programming: extending logic programming with coinduction
ICALP'07 Proceedings of the 34th international conference on Automata, Languages and Programming
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Computer Languages, Systems and Structures
Hi-index | 0.00 |
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.