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 allows ordinary methods to model things such as I/O operations and access to global state. CallƐ supports both flexible and fine-grained control over such behaviour, in a way designed to minimise the complexity of effect annotations.
CallƐ allows OO code to be prevented from performing privileged operations such as 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.
Mon 15 Jul
|10:45 - 11:45|
Philipp RuemmerUppsala University
|11:45 - 12:15|