The Arrow Project

Overview

The arrow project is to design and build the support for a system of handling information in a significantly novel way. Modern computer science research has yielded hundreds of meaningful distinctions of possible programming semantics and syntax. These include procedural, functional, object-oriented, declarative, and a range of languages that solve higher-order terms in the most abstract sense. In the last 30 years, the world has seen the rise of the use of internets: a robust unified way to encode the layout and behavior of computer networks that allows all of them to communicate in a standard way. The arrow system does a similar thing for programming languages: it supports a new unified system of understanding computations, data, and formal linguistic expressions as arrows, which can be regarded as fundamental distinctions between things. These distinctions have no intrinsic semantics, and so can be applied to use in many differing cases both of semantics and syntax. However, there are many difficult design considerations when attempting this, particularly keeping the relation of the arrow construct to the various semantics formally understandable and easy to manipulate as needed.

Documentation

I have made available a paper describing the philosophy of the system as well as one outlining the technical strategy for implementing it, using formal terms.

Implementations

Some prototype code runs on the Squeak system (see the installation instructions for details) and demonstrates a lot of the fundamental concepts.


Brian Rice
Last modified: Tue Dec 3 23:34:29 PST 2002