The Network as a Language Construct

Tony Garnock-Jones
Sam Tobin-Hochstadt
Matthias Felleisen


The actor model inspires several important programming languages. In this model, communicating concurrent actors collaborate to produce a result. A pure actor language tends to turn systems into an organization-free collection of processes, however, even though most applications call for layered and tiered architectures. To address this lack of an organizational principle, programmers invent design patterns.

This paper investigates integrating some of these basic patterns via a programming language construct. Specifically, it extends a calculus of communicating actors with a “network” construct so that actors can conduct scoped, tiered conversations. The paper then sketches how to articulate design ideas in the calculus, how to implement it, and how such an implementation shapes application programming.


The paper was presented at ESOP 2014.

Proof Scripts

We used Coq version 8.4pl2 to formulate and prove our claims about our Basic Actor Model and our Network Calculus. The proof scripts are available here:

Redex Model and Examples

The paper references the Redex models that we built of both the Basic Actor Model and the Network Calculus. The models are available here:

We also constructed a handful of examples using the Redex model, to explore the dynamics of the system:

To run an example, place it in a directory alongside redex-utils.rkt, network-calculus.rkt, and basic-actor-model.rkt. Then, from your command line, run

$ racket examplename.rkt

Further Resources

Please see the Marketplace homepage, which contains links to source code, documentation, case studies etc.