Open Access Te Herenga Waka-Victoria University of Wellington
Browse

Callℇ: An effect system for method calls

journal contribution
posted on 2021-08-21, 05:36 authored by Isaac Oscar GarianoIsaac Oscar Gariano, Robert Noble, Marco ServettoMarco Servetto
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 Callℇ, 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. Callℇ supports both flexible and fine-grained control over such behaviour, in a way designed to minimise the complexity of annotations. Callℇ’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 methods from (indirectly) calling non-deterministic primitives like random number generation or file reading.

History

Preferred citation

Gariano, I. O., Noble, J. & Servetto, M. (2019). Callℇ: An effect system for method calls. Onward! 2019 - Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, co-located with SPLASH 2019, 32-45. https://doi.org/10.1145/3359591.3359731

Journal title

Onward! 2019 - Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, co-located with SPLASH 2019

Publication date

2019-10-23

Pagination

32-45

Publisher

ACM

Publication status

Published

Online publication date

2019-10-23

Usage metrics

    Journal articles

    Categories

    No categories selected

    Keywords

    Exports

    RefWorks
    BibTeX
    Ref. manager
    Endnote
    DataCite
    NLM
    DC