🤖 AI Summary
This paper addresses the challenge that object-oriented (OO) languages inherently lack natural support for arbitrary monadic effects (e.g., raise, compose, handle). To resolve this, we propose a framework that seamlessly integrates monadic effects into a pure object calculus. Methodologically: (1) effect invocation is modeled as special methods, enabling intuitive, direct calls by ordinary programmers; (2) we design the first type-and-effect system supporting both inheritance and generics, achieving concise effect polymorphism; (3) we introduce a one-step reduction semantics that uniformly captures the translation from the source language to monadic form while guaranteeing type safety. We formally verify progress and type preservation. Our contribution is the first realization in the OO paradigm of generalized side effects that simultaneously achieves elegance, type safety, and usability—significantly lowering the barrier to monadic effect programming and providing a scalable, effect-control infrastructure for modern OO languages.
📝 Abstract
We show how to smoothly incorporate in the object-oriented paradigm constructs to raise, compose, and handle effects in an arbitrary monad. The underlying pure calculus is meant to be a representative of the last generation of OO languages, and the effectful extension is manageable enough for ordinary programmers; notably, constructs to raise effects are just special methods. We equip the calculus with an expressive type-and-effect system, which, again by relying on standard features such as inheritance and generic types, allows a simple form of effect polymorphism. The soundness of the type-and-effect system is expressed and proved by a recently introduced technique, where the semantics is formalized by a one-step reduction relation from language expressions into monadic ones, so that it is enough to prove progress and subject reduction properties on this relation.