The Eriskay project homepage

John Longley, School of Informatics, University of Edinburgh, UK

The Eriskay project is an ongoing experiment in programming language design inspired by game models of computation. (If it’s the Scottish island you’re after, try this other Eriskay homepage.)


Most modern programming languages involve a rich assortment of programming constructs, often combined in complex ways. However, in many cases, languages have tended to evolve without any definite guiding principles, so that the languages turn out more complex than they need to be. This makes them harder to learn, use, implement and reason about.

In the Eriskay project we are exploring a more principled approach, by designing a programming language (Eriskay) based on some recently developed mathematical models of computation known as game models. These models exhibit a remarkably rich structure, which has suggested novel and powerful features to include in our language; on the other hand, the models’ fundamental simplicity ensures that these features fit together in a clean and natural way. Moreover, because it is soundly based in a rich mathematical theory, our language will be very suitable for ongoing work on proving the correctness of programs.

We have now completed the formal definition of a language called Lingay. This is intended as a research language embodying many of the innovative aspects of Eriskay, and suitable for pedagogical purposes, metatheoretical study, programming experiments, and case studies in program verification. We have also produced a prototype implementation of Lingay based directly on the underlying game semantics; this pioneers a new approach to semantics-based language prototyping. [Disclaimer: Lingay is not itself intended for serious programming applications!]

The following specific language innovations have arisen from our work so far, and are embodied in the design of Lingay:

In the future, we plan to extend Lingay with additional features to yield Eriskay – a full-scale language suitable for real programming applications. We also plan to use Lingay and its implementation as a platform for experimenting with programming idioms made possible by our new language features, and for case studies in reasoning about programs.

Papers and theses

Prototype implementation

The prototype implementation, by John Longley and Nicholas Wolverson, runs on SML of New Jersey (at least on the last stable version, 110.0.7 – let us know if you have problems running it on more recent versions). Just fetch this tarfile, unpack it using an incantation such as tar -xf LingayImpl2.tar, and follow the instructions in the README file (which also contains details of a few features not yet implemented). Alternatively, browse the source files here.

Here is some sample Lingay code consisting of a few class definitions (a more illuminating set of tutorial examples will appear here soon).

Here is some more Lingay code giving implementations of certain crucial operations important to the metatheory of Lingay (not recommended for beginners!).


John Longley
Last modified: Wed May 13 12:41:26 BST 2009