CallE: An Effect System for Method Calls
Isaac Oscar Gariano, James Noble, Marco Servetto

TL;DR
CallE introduces a flexible effect system for object-oriented languages where effects are modeled as method calls, enabling static reasoning about effects like I/O, global state access, and privileged operations with minimal annotation complexity.
Contribution
It presents CallE, a novel effect system that treats effects as method calls, allowing fine-grained control and static reasoning about effects in object-oriented code.
Findings
Prevents privileged operations in OO code.
Ensures determinism by restricting non-deterministic calls.
Supports flexible, fine-grained effect annotations.
Abstract
Effect systems are used to statically reason about the effects an expression may have when evaluated. In the literature, such effects include various behaviours as diverse as memory accesses and exception throwing. Here we present CallE, an object-oriented language that takes a flexible approach where effects are just method calls: this works well because ordinary methods often model things like I/O operations, access to global state, or primitive language operations such as thread creation. CallE supports both flexible and fine-grained control over such behaviour, in a way designed to minimise the complexity of annotations. CallE's effect system can be used to prevent OO code from performing privileged operations, such as querying a database, modifying GUI widgets, exiting the program, or performing network communication. It can also be used to ensure determinism, by preventing…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
