Effects, Capabilities, and Boxes

This is the artifact accompanying the paper:

Effects, Capabilities, and Boxes: From Scope-based Reasoning to Type-based Reasoning and Back

by Jonathan Immanuel Brachthäuser, Philipp Schuster, Edward Lee, and Aleksander Boruch-Gruszecki

In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), 2022.

Learn More

In this interactive demo we will take you through a brief introduction to System C and a quick tour of its features.

You can find all examples from the paper on this page.

Editors

In general, you will find a lot of small code snippets that can you can typecheck and run in the browser. For example, this is a program that prints out “Hello World!”. Try clicking typecheck and run to load the editor (this can take a while the first time).

def sayHello(): Unit {
  println("Hello World!")
}

The editor comes with basic support for System C – try hovering over println!

You can also modify the program and then click typecheck and run again to run the typechecker. Alternatively, in the editor you can also use the keybinding <CTRL+Enter> on Windows or <CMD+Enter> on MacOS.

REPLs

Sometimes you will also find REPL windows. To run the code example, just click the run button!

sayHello()

Like with other editors, you can freely change the REPL input. Since REPLs are always single-line, you can simply press <ENTER> instead of clicking run.